CMake是一个跨平台的开源构建工具,用于管理C++项目的构建过程。
注意CMake命令语法不区分大小写
-
cmake_minimum_required
:指定项目所需的CMake的最低版本。cmake_minimum_required(VERSION <version>)
-
project
:定义项目的名称、版本和描述信息。project(<project_name> VERSION <version> DESCRIPTION <description>)
-
add_executable
:添加一个可执行文件的构建目标。add_executable(<target_name> <source_files>)
-
add_library
:添加一个库的构建目标(静态库或共享库)。add_library(<target_name> <library_type> <source_files>)
-
target_link_libraries
:将目标与所需的库链接。target_link_libraries(<target_name> <library_name>)
-
target_include_directories
:为目标设置包含路径。target_include_directories(<target_name> PRIVATE <include_directories>)
-
target_compile_definitions
:为目标设置编译定义。target_compile_definitions(<target_name> PRIVATE <definitions>)
-
add_subdirectory
:添加一个子目录到构建。add_subdirectory(<subdirectory>)
-
find_package
:寻找并加载其他软件包或库。find_package(<package_name> <version>)
-
set
:设置变量的值。set(<variable_name> <value>)
-
if
:条件判断。if(<condition>) # commands endif()
-
foreach
:循环遍历列表。foreach(<variable> <list>) # commands endforeach()
-
add_definitions
:添加编译定义到项目中。add_definitions(-D<definition>)
-
message
:输出消息到CMake的输出。message(<message>)
-
set_target_properties
:设置目标的属性,例如输出路径。set_target_properties(<target_name> PROPERTIES <property_name> <value>)
-
set
和add_compile_options
:设置CMake编译选项set
也可以用来设置编译器选项,但是设置的CMAKE_CXX_FLAGS仅限于c/c++编译器使用更推荐使用
add_compile_options
设置编译器# 举例 set(CMAKE_CXX_FLAGS "-Wall -Wextra") add_compile_options(-Wall -Wextra)
-
include
:包含外部的CMake脚本文件include(<filename>)
-
file(GLOB...)
:通过通配符模式匹配来获取一组文件推荐使用
set()
命令管理项目的源文件列表# 示例:匹配当前目录下的所有 .cpp 和 .h 文件,并将它们保存在 SOURCE_FILES 变量中。 file(GLOB SOURCE_FILES "*.cpp" "*.h")
-
MATCHES
:字符串操作符,用于检查一个字符串是否匹配一个正则表达式# 设置了一个字符串 my_string,然后使用 MATCHES 操作符判断它是否包含子字符串 "CMake"。 set(my_string "Hello, CMake!") if(my_string MATCHES "CMake") message("String contains 'CMake'")
-
$ENV{}
:该命令用来获取环境变量的值message("Value of HOME: $ENV{HOME}")
-
install
:配置安装规则# 用于配置安装规则,以便在构建项目后将生成的文件复制到指定的目标位置。 install(TARGETS <target_name> DESTINATION <destination>) #<target_name> 是要安装的构建目标(可执行文件、共享库等),而 <destination> 是目标安装路径。 install(FILE <file_path> DESTINATION <destination>) #将一个文件从构建目录复制到指定的安装目标位置
-
CMake中定义好的一些变量
CMAKE_SOURCE_DIR: 项目的顶级源代码目录路径。 CMAKE_BINARY_DIR: 构建目录的路径。 CMAKE_CURRENT_SOURCE_DIR: 当前处理的CMakeLists.txt所在的源代码目录路径。 CMAKE_CURRENT_BINARY_DIR: 当前处理的CMakeLists.txt所在的构建目录路径。 CMAKE_INSTALL_PREFIX: 安装目录的路径,你可以使用 -DCMAKE_INSTALL_PREFIX=<path> 选项来指定。 CMAKE_CXX_COMPILER: C++编译器的路径。 CMAKE_C_COMPILER: C编译器的路径。 CMAKE_BUILD_TYPE: 构建类型,如Debug、Release等。 CMAKE_SYSTEM_NAME: 系统名称,如Linux、Windows等。 CMAKE_SYSTEM_PROCESSOR: 系统处理器类型