在项目中,项目根目录的CMakeLists.txt是CMake的入口点,也就是说CMake命令先找CMakeLists.txt,并执行内部的命令,生成构建系统。CMakeLists.txt应该定义了所有的编译控制。并用add_subdirectory()指定要处理的子文件夹(子项目),子文件夹内部也要有MakeLists.txt文件,在CMake执行到add_subdirectory()时,CMake会进入...
cmake 脚本/模块(不是 CMakeLists,而是.cmake 文件) 条件判断 if 语句 最完整的 if 语法结构如下 if(<condition>) <commands> elseif(<condition>) # optional block, can be repeated <commands> else() # optional block <commands> endif() 其中的 elseif 和 else 都是可选的,例如 if(WIN32) mess...
1,CMAKE_MAJOR_VERSION,CMAKE 主版本号,比如 2.4.6 中的 2 2,CMAKE_MINOR_VERSION,CMAKE 次版本号,比如 2.4.6 中的 4 3,CMAKE_PATCH_VERSION,CMAKE 补丁等级,比如 2.4.6 中的 6 4,CMAKE_SYSTEM,系统名称,比如 Linux-2.6.22 5,CMAKE_SYSTEM_NAME,不包含版本的系统名,比如 Linux 6,CMAKE_SYSTEM...
1# 此策略(Policy)在 CMake2.8.0才被引入2# 因此这里需要指定最低 CMake 版本为2.83cmake_minimum_required(VERSION2.8)4set(YES0)56# 输出 True7if(YES)8message(True)9else()10message(False)11endif()1213# 输出 False14if(${YES})15message(True)16else()17message(False)18endif() 表达式中可以包...
一、语法介绍 1.注释 在CMakeLists.txt 文件中,使用“#”号进行单行注释,譬如: 大多数脚本语言都是使用“#”号进行注释。 2.命令(command) 通常在 CMakeLists.txt 文件中,使用最多的是命令,譬如上例中的 cmake_minimum_required、project 都是命令; ...
1. 指定 cmake 的最小版本 cmake_minimum_required(VERSION 3.4.1) 这行命令是可选的,我们可以不写这句话,但在有些情况下,如果 CMakeLists.txt 文件中使用了一些高版本 cmake 特有的一些命令的时候,就需要加上这样一行,提醒用户升级到该版本之后再执行 cmake。
CMAKE_CURRENT_LIST_DIR 引用这个变量所在文件的全目录 CMAKE_CURRENT_LIST_LINE 引用这个变量所在文件行号 CMAKE_INSTALL_PREFIX 安装目录前缀 工程自身变量 PROJECT_NAME <PROJECT-NAME>_VERSION <PROJECT-NAME>_VERSION_MAJOR 符号文件、静态库、动态库和运行输出目录变量 ...
在《深入浅出CMake(一):基础篇》文章中,我们已经知道了怎么依葫芦画瓢编写简单的 CMake 构建文件了,但如果应对复杂的工程的话,这还是远远不够的。 CMake 是一套编译构建体系,所以它有自己的一套语法概念,也有自己的 CMake Language,你可以讲它看做是一套脚本语言,所以它能做很多编程的事情。
简化语法 -- BOOL类型 option(VARIABLE "docstring" <ON|OFF>) 1. 复盖策略 当普通变量与缓存变量重名时的复盖策略 cmake_policy(SET CMPC126 NEW) # 3.21之后才支持,NEW 不删除普通变量, OLD删除普通变量 1. 内置缓存变量 不配置,guimake就有的变量。
cmake_minimum_required(VERSION 3.0) project(<工程名>) #将子目录添加到生成中 add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM]) cmake_minimum_required(VERSION 3.0) project(<工程名>) #终端输出当前工程目录 message("Project PATH: ${PROJECT_SOURCE_DIR}") #设置编译目标输出...