cmake常用命令总结

最近研究了下cmake,总结了一些常用命令,方便以后快速查找。

  1. project(projectname [CXX] [C] [Java]):

    1. 设置工程名。
  2. set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]):

    1. 设置变量VAR为指定值。
    2. 例子:set(CXX_FLAGS -g -Wall)。将变量CXX_FLAGS设置为"-g;-Wall"。其中以分号分隔。
  3. include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...):

    1. 将dir1, dir2作为include搜索路径。
  4. find_package( [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [components...]]):

    1. 暂时不是很理解。
    2. 例子:find_package(Threads REQUIRED)
  5. add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]):

    1. source_dir下的CmakeLists.txt也会被处理。
  6. 编译链接动作:

    1. add_library(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):
      1. 使用指定源文件生成库文件。该库文件会存储于CMAKE_ARCHIVE_OUTPUT_DIRECTORY或者CMAKE_LIBRARY_OUTPUT_DIRECTORY指定的目录。
    2. add_executable(exename [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):
      1. 使用指定源文件生成可执行文件。会存储于CMAKE_RUNTIME_OUTPUT_DIRECTORY指定的位置。
    3. target_link_libraries(target library1 <debug | optimized> library2 ...):
      1. 将库文件链接到目标文件。
  7. 内置变量:

    1. 基础目录:
      1. PROJECT_SOURCE_DIR:执行cmake的目录。比如我在/mnt/d/work/cpp/NanoSTL/build目录下执行cmake ..,虽然根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,PROJECT_SOURCE_DIR的值还是/mnt/d/work/cpp/NanoSTL/build。
      2. PROJECT_BINARY_DIR:工程根目录。比如根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,那么该变量就是/mnt/d/work/cpp/NanoSTL。
    2. CMAKE_CXX_FLAGS:编译器选项。
    3. 输出目录:
      1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:编译后.a文件存储位置。
      2. CMAKE_LIBRARY_OUTPUT_DIRECTORY:动态链接文件.so存储位置。
      3. CMAKE_RUNTIME_OUTPUT_DIRECTORY:可执行文件存储位置。
  8. 常用链接:

    1. cmake官方文档
posted @ 2019-05-18 14:06  gatsby123  阅读(1406)  评论(0编辑  收藏  举报