CMake Cheat Sheet

CMakeLists.txt

注释

#

行注释

#[[ ]]

块注释

指定最低版本

cmake_minimum_required()

定义工程名称

project()

并可指定工程的版本、工程描述、web主页地址、支持的语言(默认情况支持所有语言),如果不需要这些都是可以忽略的,只需要指定出工程名字即可。

定义工程生成的可执行程序

Adds an executable target called <name> to be built from the source files listed in the command invocation.

name 为最后生成的可执行文件逻辑名称,最后可能会根据平台不同. 比如wendous会加上.exe后缀.

一个cmakelist中可以包含多个该函数,生成不同的可执行程序.

向目标指定构建时的特性,例如COMPILE_FLAGS 配置编译选项

一般将cmake生成的文件放入build文件夹

按照指定命令添加目标. 且该目标不会产生任何输出并且总被认为是过时的. 可用于子目录使用已有库的编译.

指明目标在链接时所需要的库.

指明目标之间的依赖关系,确保依赖在target前被编译.

运行

定义变量

变量操作:

指定Cpp标准

指定输出路径

搜索文件

方法一:

方法二:

Recursive 代表递归查询子目录的所有文件

指定include目录

为编译器指定目录寻找文件.

相对路径的起点为当前的source 目录,被引入的目录加入当前的cmakelistINCLUDE_DIRECTORIES中.

 

PROJECT_SOURCE_DIR 一般为工程的根目录

预定义宏含义
PROJECT_SOURCE_DIR使用cmake命令后紧跟的目录,一般为工程根目录
PROJECT_BINARTY_DIR执行cmake命令的目录
CMAKE_CURRENT_SOURCE_DIR当前处理的CMakeLists.txt所在目录
CMAKE_BUILD_TYPE构建类型 设置为Debug时相当于 g++ 编译时添加选项 -g. Release 时经过编译优化 不带调试信息

条件编译

gcc中-D

示例

 

TODO