Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xmake-template-cpp

English | 简体中文

基于xmake的C++项目模板,参照了Unreal Engine的项目结构设计,提供了完整的构建、测试和部署流程。

项目特点

  • 模块化的项目组织结构
  • 支持多平台(Windows、Linux、macOS)和多架构(x64、x86_64、arm64、riscv64)
  • 灵活的构建模式(debug、release、releasedbg、profile、coverage)
  • 内置构建缓存支持,提高构建速度
  • 统一的目标创建和管理机制
  • 自动处理依赖、资源和配置文件
  • 完善的测试框架支持

快速开始

1. 环境准备

确保您已安装以下工具:

  • xmake 3.0.1或更高版本
  • 兼容的C++编译器(如MSVC、GCC、Clang)

2. 项目初始化

克隆项目后,您可以使用以下命令初始化和构建项目:

# 初始化项目
xmake f

# 构建项目
xmake

# 运行测试
xmake test

# 安装项目
xmake install

3. 添加新的Target

项目提供了统一的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)

项目配置详解

1. 核心配置文件

  • xmake/project.lua:项目基本配置

    • 项目名称和版本
    • C/C++语言版本
    • 向量化指令集
    • 编译器标志和选项
    • 平台和架构支持
    • 构建模式配置

    您可以通过SetupProject(custom_name, custom_version)函数自定义项目名称和版本。

  • xmake/setup.lua:构建系统初始化配置

    • 包含其他配置文件
    • 设置模块和插件目录

2. 资源和配置管理

  • app/assets/main:运行时资源文件
  • app/assets/test:测试用资源文件
  • app/config/base:全平台通用配置
  • app/config/$(plat)_$(arch):特定平台的配置

构建时,资源和配置文件会自动复制到构建目录。

3. 依赖管理

  • app/source/requires.lua:声明第三方依赖
  • xmake/repo/packages:本地仓库包存放位置

4. 构建功能模块

  • xmake/funcs/funcs_target.lua:提供Target创建和管理函数
  • xmake/funcs/funcs_base.lua:基础辅助函数
  • xmake/rules/rules_file.lua:自定义构建规则

5. 构建模式

项目支持以下构建模式:

  • debug:调试模式,无优化,包含调试符号
  • release:发布模式,最高优化,移除符号
  • releasedbg:带调试信息的发布模式
  • profile:性能分析模式
  • coverage:代码覆盖率分析模式

您可以使用以下命令指定构建模式:

xmake f -m debug
xmake

6. 平台和架构

支持的平台:

  • Windows
  • Linux
  • macOS

支持的架构:

  • x64 (Windows)
  • x86_64 (Linux/macOS)
  • arm64
  • riscv64

您可以使用以下命令指定平台和架构:

xmake f -p linux -a x86_64
xmake

高级功能

1. 自定义配置

您可以在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

2. 使用外部脚本

项目提供了多个辅助脚本:

  • 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安装脚本

3. Docker支持

项目提供了Docker构建环境配置:

  • docker/Dockerfile.debian-bookworm-x86_64-cpu
  • docker/Dockerfile.debian-bookworm-arm64-cpu
  • docker/Dockerfile.debian-sid-riscv64-cpu

文档

项目文档存放在doc/目录下:

  • doc/images:项目相关图片
  • doc/openapi:API文档
  • doc/puml:PlantUML图表

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages