基本语法:
包含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.1
LANGAUGES 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