cmake命令

发布时间 2023-09-22 17:30:03作者: ray963

CMake是一个跨平台的开源构建工具,用于管理C++项目的构建过程。

注意CMake命令语法不区分大小写

  1. cmake_minimum_required:指定项目所需的CMake的最低版本。

    cmake_minimum_required(VERSION <version>)
    
  2. project:定义项目的名称、版本和描述信息。

    project(<project_name> VERSION <version> DESCRIPTION <description>)
    
  3. add_executable:添加一个可执行文件的构建目标。

    add_executable(<target_name> <source_files>)
    
  4. add_library:添加一个库的构建目标(静态库或共享库)。

    add_library(<target_name> <library_type> <source_files>)
    
  5. target_link_libraries:将目标与所需的库链接。

    target_link_libraries(<target_name> <library_name>)
    
  6. target_include_directories:为目标设置包含路径。

    target_include_directories(<target_name> PRIVATE <include_directories>)
    
  7. target_compile_definitions:为目标设置编译定义。

    target_compile_definitions(<target_name> PRIVATE <definitions>)
    
  8. add_subdirectory:添加一个子目录到构建。

    add_subdirectory(<subdirectory>)
    
  9. find_package:寻找并加载其他软件包或库。

    find_package(<package_name> <version>)
    
  10. set:设置变量的值。

    set(<variable_name> <value>)
    
  11. if:条件判断。

    if(<condition>)
        # commands
    endif()
    
  12. foreach:循环遍历列表。

    foreach(<variable> <list>)
        # commands
    endforeach()
    
  13. add_definitions:添加编译定义到项目中。

    add_definitions(-D<definition>)
    
  14. message:输出消息到CMake的输出。

    message(<message>)
    
  15. set_target_properties:设置目标的属性,例如输出路径。

    set_target_properties(<target_name> PROPERTIES <property_name> <value>)
    
  16. setadd_compile_options:设置CMake编译选项

    set也可以用来设置编译器选项,但是设置的CMAKE_CXX_FLAGS仅限于c/c++编译器使用

    更推荐使用add_compile_options设置编译器

    # 举例
    set(CMAKE_CXX_FLAGS "-Wall -Wextra")
    add_compile_options(-Wall -Wextra)
    
  17. include:包含外部的CMake脚本文件

    include(<filename>)
    
  18. file(GLOB...):通过通配符模式匹配来获取一组文件

    推荐使用set()命令管理项目的源文件列表

    # 示例:匹配当前目录下的所有 .cpp 和 .h 文件,并将它们保存在 SOURCE_FILES 变量中。
    file(GLOB SOURCE_FILES "*.cpp" "*.h")
    
  19. MATCHES:字符串操作符,用于检查一个字符串是否匹配一个正则表达式

    # 设置了一个字符串 my_string,然后使用 MATCHES 操作符判断它是否包含子字符串 "CMake"。
    set(my_string "Hello, CMake!")
    if(my_string MATCHES "CMake")
        message("String contains 'CMake'")
    
  20. $ENV{}:该命令用来获取环境变量的值

    message("Value of HOME: $ENV{HOME}")
    
  21. install:配置安装规则

    # 用于配置安装规则,以便在构建项目后将生成的文件复制到指定的目标位置。
    install(TARGETS <target_name> DESTINATION <destination>)	#<target_name> 是要安装的构建目标(可执行文件、共享库等),而 <destination> 是目标安装路径。
    install(FILE <file_path> DESTINATION <destination>)	#将一个文件从构建目录复制到指定的安装目标位置
    
  22. 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: 系统处理器类型