Cmake 命令手册

学习开源项目时候遇到的cmake命令,做一些记录,命令的功能解释得相对单一,遇到不一样的用法再作更新。


  1. add_compile_options(-idirafter)
      添加编译选项 比如-std=c++11 针对所有编译器
      set(CMAKE_CXX_FLAGS -O3 -fPIC) 只针对c++编译器
      set(CMAKE_C_FLAGS -O3 -fPIC) 只针对c编译器
  2. include_directories()
      表示引入头文件搜索路径
  3. find_package(Eigen3 REQUIRED) find_package(Qt5 COMPONENTS Core REQUIRED)
      批量引入库文件和头文件
        REQUIRED:必须找到该库,找不到就报错
        COMPONENTS:从库中找子库(模块)xx,比如COMPONENTS Core 表示找到子模块Core
  4. link_directories()
      将头文件目录引入到当前工程——添加.lib库文件的搜索路径
    link_libraries()
      表示将具体的库文件引入到当前工程中,所填入的路径必须是全路径
    target_link_libraries(qt_test Qt5::Core )
      连接Core.dll到qt_test.exe
    target_include_directories()
      将头文件目录针对性的引入到目标子工程(当前工程一般可以包含多个子工程)
  5. set()
      设置普通变量 set( … [PARENT_SCOPE])
      设置缓存条目 set( … CACHE [FORCE])
      设置环境变量 set(ENV{} [])
  6. ExternalProject_Add()
      使用ExternalProject来管理项目的第三方依赖,包括配置、下载等,注意需要先带入插件include(ExternalProject)
  7. add_subdirectory (source_dir [binary_dir] [EXCLUDE_FROM_ALL])
      添加一个子目录并构建该子目录
        source_dir 该参数指定一个子目录,子目录下应该包含CMakeLists.txt文件和代码文件
        binary_dir 该参数指定一个目录,用于存放输出文件
        EXCLUDE_FROM_ALL 当指定了该参数,则子目录下的目标不会被父目录下的目标文件包含进去,父目录的CMakeLists.txt不会构建子目录的目标文件,必须在子目录下显式去构建
  8. install()
      命令为项目生成一系列的安装规则
        安装目标文件 install(TARGETS [RUNTIME | LIBRARY | ARCHIVE] DESTINATION … )
        安装普通文件 install( files…DESTINATION < dir> …)
        安装非目标文件的可执行程序,比如脚本类 INSTALL(PROGRAMS files… DESTINATION < dir> … )
        安装目录 install(DIRECTORY DESTINATION …)
  9. add_library( [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])
      使用指定的源文件向项目(project)中添加库

你可能感兴趣的:(Cmake,c++)