基本语法:
包含2方面内容:
- 命令(不区分大小写,由命令名称、小括号和参数组成,参数之间使用空格进行间隔)
- 注释(#号开头)
以下是参考示例:
cmake_minimum_required(VERSION 3.5)# 设置加载显示的工程名称project(MeasureProject VERSION 0.1 LANGUAGES CXX)list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")set(CMAKE_AUTOUIC ON)set(CMAKE_CXX_STANDARD 20)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug/bin)add_subdirectory(src)
标识 数据
VERSION 0.1LANGAUGES CXX
常用命令
cmake_minimum_required(VERSION 3.5)project(Test VERSION 0.1 LANGUAGES CXX)
- 指定可执行文件目标命令:
# file命令:获取指定目录下所有匹配的文件# GLOB_RECURSE:递归获取# SRC:将获取到的文件存储在SRC变量中file(GLOB_RECURSE SRC*.h*.cpp*.ui)# 指定一个可可执行目标为:service_test,WIN32表明在windows平台下,$(SRC)标识此变量下的所有文件add_executable(service_test WIN32 ${SRC})
- 查询某个文件夹下的所有源文件(*.cpp)
# . :表示在当前文件夹下查找# SRC:查找结果存储在SRC变量中aux_source_directory(. SRC)
- 在本项目中添加子目录:
# 指定子目录后,子目录的cmakelists.txt以及源文件都会被加载add_subdirectory(math)# 添加链接库target_link_libraries(Demo MathFunctions)--------------------------------------------------------------------------------# 子目录下的cmakelists.txt# 生成链接库:静态链接库add_library (MathFunctions ${DIR_LIB_SRCS})
- 新增自定义选项:条件判断是否加载某一个库
# 是否使用自己的 MathFunctions 库,根据是否定义USE_MYMATH这个宏来判断option (USE_MYMATH"Use provided math implementation" ON)# 是否加入 MathFunctions 库if (USE_MYMATH)# 添加包含头文件目录,用于编译include_directories ("${PROJECT_SOURCE_DIR}/math")add_subdirectory (math)set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)endif (USE_MYMATH)
- 使用配置文件对编译项进行配置
# 加入一个配置头文件,用于处理 CMake 对源码的设置configure_file ("${PROJECT_SOURCE_DIR}/config.h.in""${PROJECT_BINARY_DIR}/config.h")
config.h.in是一个模板,configure_file命令会将其复制到config.h中,并进行相应替换。内容如下:
#cmakedefine USE_MYMATH#define PROJECT_VERSION "@PROJECT_VERSION@"#define ENABLE_FEATURE_X @ENABLE_FEATURE_X@
其中:”@PROJECT_VERSION@” 会替换成PROJECT_VERSION变量的具体内容,属于占位符
- 配置安装规则
# 将生成的可执行目标Demo放置在bin目录下install (TARGETS Demo DESTINATION bin)# 将生成的config.h放在include下install (FILES "${PROJECT_BINARY_DIR}/config.h"DESTINATION include)
常用标识:
| 标识 | 描述 |
|---|---|
| VERSION | 版本信息 |
| LANGAUGES | 语言相关信息如:CXX,指编写的代码语言 |
| GLOB_RECURSE | 递归查询参数 |
| GLOB | 查询参数 |
文档更新时间: 2023-07-03 09:43 作者:admin