English | 简体中文
基于xmake的C++项目模板,参照了Unreal Engine的项目结构设计,提供了完整的构建、测试和部署流程。
- 模块化的项目组织结构
- 支持多平台(Windows、Linux、macOS)和多架构(x64、x86_64、arm64、riscv64)
- 灵活的构建模式(debug、release、releasedbg、profile、coverage)
- 内置构建缓存支持,提高构建速度
- 统一的目标创建和管理机制
- 自动处理依赖、资源和配置文件
- 完善的测试框架支持
确保您已安装以下工具:
- xmake 3.0.1或更高版本
- 兼容的C++编译器(如MSVC、GCC、Clang)
克隆项目后,您可以使用以下命令初始化和构建项目:
# 初始化项目
xmake f
# 构建项目
xmake
# 运行测试
xmake test
# 安装项目
xmake install项目提供了统一的Target创建机制,您可以在以下目录结构中添加新的Target:
app/source/programs/:添加可执行程序app/source/runtime/:添加静态库、动态库或头文件库
每个Target的目录结构应包含:
$(targetdir):公共代码,头文件会被安装和供其他Target使用$(targetdir)/private:私有代码,不会被安装或暴露给依赖它的Target$(targetdir)/test:测试代码,以test_开头的源文件会被自动识别为测试
要添加一个新的可执行程序Target,只需在app/source/programs/目录下创建新文件夹,并添加xmake.lua文件:
local target_name = "my_new_app"
local kind = "binary"
local group_name = "program"
local pkgs = {}
local deps = {"common"} -- 依赖其他模块
local syslinks = {}
local function callback()
-- 自定义配置
end
CreateTarget(target_name, kind, os.scriptdir(), group_name, pkgs, deps, syslinks, callback)-
xmake/project.lua:项目基本配置- 项目名称和版本
- C/C++语言版本
- 向量化指令集
- 编译器标志和选项
- 平台和架构支持
- 构建模式配置
您可以通过
SetupProject(custom_name, custom_version)函数自定义项目名称和版本。 -
xmake/setup.lua:构建系统初始化配置- 包含其他配置文件
- 设置模块和插件目录
app/assets/main:运行时资源文件app/assets/test:测试用资源文件app/config/base:全平台通用配置app/config/$(plat)_$(arch):特定平台的配置
构建时,资源和配置文件会自动复制到构建目录。
app/source/requires.lua:声明第三方依赖xmake/repo/packages:本地仓库包存放位置
xmake/funcs/funcs_target.lua:提供Target创建和管理函数xmake/funcs/funcs_base.lua:基础辅助函数xmake/rules/rules_file.lua:自定义构建规则
项目支持以下构建模式:
debug:调试模式,无优化,包含调试符号release:发布模式,最高优化,移除符号releasedbg:带调试信息的发布模式profile:性能分析模式coverage:代码覆盖率分析模式
您可以使用以下命令指定构建模式:
xmake f -m debug
xmake支持的平台:
- Windows
- Linux
- macOS
支持的架构:
- x64 (Windows)
- x86_64 (Linux/macOS)
- arm64
- riscv64
您可以使用以下命令指定平台和架构:
xmake f -p linux -a x86_64
xmake您可以在Target的回调函数中添加自定义配置,例如:
local function callback()
-- 设置配置目录
set_configdir("$(builddir)/config")
-- 添加包含目录
add_includedirs("$(builddir)/config", { public = true })
-- 添加配置文件
add_configfiles("config.h.in")
-- 自定义配置逻辑
on_config(function(target)
-- 配置处理
end)
end项目提供了多个辅助脚本:
scripts/build-linux_x86_64_gcc.sh:Linux构建脚本scripts/build-windows_x64_msvc.bat:Windows构建脚本scripts/dev-vs.bat:Visual Studio开发环境设置scripts/dev-vscode.bat:VS Code开发环境设置scripts/install_xmake.sh/scripts/install_xmake.ps1:xmake安装脚本
项目提供了Docker构建环境配置:
docker/Dockerfile.debian-bookworm-x86_64-cpudocker/Dockerfile.debian-bookworm-arm64-cpudocker/Dockerfile.debian-sid-riscv64-cpu
项目文档存放在doc/目录下:
doc/images:项目相关图片doc/openapi:API文档doc/puml:PlantUML图表