基本语法:

包含2方面内容:

  1. 命令(不区分大小写,由命令名称、小括号和参数组成,参数之间使用空格进行间隔)
  2. 注释(#号开头)

以下是参考示例:

  1. cmake_minimum_required(VERSION 3.5)
  2. # 设置加载显示的工程名称
  3. project(MeasureProject VERSION 0.1 LANGUAGES CXX)
  4. list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
  5. set(CMAKE_AUTOUIC ON)
  6. set(CMAKE_CXX_STANDARD 20)
  7. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug/bin)
  8. add_subdirectory(src)

标识 数据

  1. VERSION 0.1
  2. LANGAUGES CXX

常用命令

  1. cmake_minimum_required(VERSION 3.5)
  2. project(Test VERSION 0.1 LANGUAGES CXX)
  • 指定可执行文件目标命令:
  1. # file命令:获取指定目录下所有匹配的文件
  2. # GLOB_RECURSE:递归获取
  3. # SRC:将获取到的文件存储在SRC变量中
  4. file(GLOB_RECURSE SRC
  5. *.h
  6. *.cpp
  7. *.ui
  8. )
  9. # 指定一个可可执行目标为:service_test,WIN32表明在windows平台下,$(SRC)标识此变量下的所有文件
  10. add_executable(service_test WIN32 ${SRC})
  • 查询某个文件夹下的所有源文件(*.cpp)
  1. # . :表示在当前文件夹下查找
  2. # SRC:查找结果存储在SRC变量中
  3. aux_source_directory(. SRC)
  • 在本项目中添加子目录:
  1. # 指定子目录后,子目录的cmakelists.txt以及源文件都会被加载
  2. add_subdirectory(math)
  3. # 添加链接库
  4. target_link_libraries(Demo MathFunctions)
  5. --------------------------------------------------------------------------------
  6. # 子目录下的cmakelists.txt
  7. # 生成链接库:静态链接库
  8. add_library (MathFunctions ${DIR_LIB_SRCS})
  • 新增自定义选项:条件判断是否加载某一个库
  1. # 是否使用自己的 MathFunctions 库,根据是否定义USE_MYMATH这个宏来判断
  2. option (USE_MYMATH
  3. "Use provided math implementation" ON)
  4. # 是否加入 MathFunctions 库
  5. if (USE_MYMATH)
  6. # 添加包含头文件目录,用于编译
  7. include_directories ("${PROJECT_SOURCE_DIR}/math")
  8. add_subdirectory (math)
  9. set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
  10. endif (USE_MYMATH)
  • 使用配置文件对编译项进行配置
  1. # 加入一个配置头文件,用于处理 CMake 对源码的设置
  2. configure_file (
  3. "${PROJECT_SOURCE_DIR}/config.h.in"
  4. "${PROJECT_BINARY_DIR}/config.h"
  5. )

config.h.in是一个模板,configure_file命令会将其复制到config.h中,并进行相应替换。内容如下:

  1. #cmakedefine USE_MYMATH
  2. #define PROJECT_VERSION "@PROJECT_VERSION@"
  3. #define ENABLE_FEATURE_X @ENABLE_FEATURE_X@

其中:”@PROJECT_VERSION@” 会替换成PROJECT_VERSION变量的具体内容,属于占位符

  • 配置安装规则
  1. # 将生成的可执行目标Demo放置在bin目录下
  2. install (TARGETS Demo DESTINATION bin)
  3. # 将生成的config.h放在include下
  4. install (FILES "${PROJECT_BINARY_DIR}/config.h"
  5. DESTINATION include)

常用标识:

标识 描述
VERSION 版本信息
LANGAUGES 语言相关信息如:CXX,指编写的代码语言
GLOB_RECURSE 递归查询参数
GLOB 查询参数
文档更新时间: 2023-07-03 09:43   作者:admin