cmake經常使用命令總結

最近研究了下cmake,總結了一些經常使用命令,方便之後快速查找。html

  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官方文檔
相關文章
相關標籤/搜索