1. 程式人生 > >CMake筆記(2)預定義變數

CMake筆記(2)預定義變數

CMake預定義變數

  • CMAKE_MAJOR_VERSION cmake主版本號,如2.8.6中的2。
  • CMAKE_MINOR_VERSION cmake次版本號,如2.8.6中的8。
  • CMAKE_PATCH_VERSION cmake補丁等級,如2.8.6中的6。
  • CMAKE_SYSTEM 系統名稱,例如Linux-2.6.22。
  • CAMKE_SYSTEM_NAME 不包含版本的系統名,如Linux。
  • CMAKE_SYSTEM_VERSION 系統版本,如2.6.22。
  • CMAKE_SYSTEM_PROCESSOR 處理器名稱,如i686。
  • UNIX 在所有的類UNIX平臺為TRUE,包括OS X和cygwin。
  • WIN32 在所有的win32平臺為TRUE,包括cygwin。
  • CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR、<projectname>_SOURCE_DIR,這三個變數指代的內容是一致的,是工程頂層目錄。
  • CMAKE_BINARY_DIR、PROJECT_BINARY_DIR、<projectname>_BINARY_DIR,這三個變數指代的內容是一致的,如果是in source編譯,指得就是工程頂層目錄,如果 是out-of-source編譯,指的是工程編譯發生的目錄。
  • CMAKE_CURRENT_SOURCE_DIR,指的是當前處理的CMakeLists.txt所在的路徑。

  • CMAKE_CURRRENT_BINARY_DIR,如果是in-source編譯,它跟CMAKE_CURRENT_SOURCE_DIR一致,如果是out-ofsource 編譯,他指的是target編譯目錄。

  • CMAKE_CURRENT_LIST_FILE,輸出呼叫這個變數的CMakeLists.txt的完整路徑。

  • CMAKE_CURRENT_LIST_LINE,輸出這個變數所在的行,可以定位當前CMakeList.txt檔案語句執行的位置。
  • CMAKE_MODULE_PATH ,定義自己的cmake模組所在的路徑。
  • EXECUTABLE_OUTPUT_PATH ,重新定義目標二進位制可執行檔案的存放位置
  • LIBRARY_OUTPUT_PATH ,重新定義目標連結庫檔案的存放位置
  • PROJECT_NAME ,返回通過PROJECT指令定義的專案名稱
  • CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ,用來控制IF ELSE語句的書寫方式
  • CMAKE_BUILD_TYPE,控制 Debug 和 Release 模式的構建,例如:

在CMakeList.txt檔案中

SET(CMAKE_BUILD_TYPE Debug)

使用命令列引數

cmake DCMAKE_BUILD_TYPE=Release
  • BUILD_SHARED_LIBS, 控制預設的庫編譯方式,如果未進行設定,使用ADD_LIBRARY時又沒有指定庫型別,預設編譯生成的庫都是靜態庫 
  • CMAKE_C_FLAGS, 設定C編譯選項
  • CMAKE_CXX_FLAGS, 設定C++編譯選項
  • CROSS_TOOLCHAIN_PREFIX ,指定編譯器路徑
  • CMAKE_C_COMPILER,指定c編譯器
  • CMAKE_CXX_COMPILER,指定c++編譯器
  • CMAKE_INSTALL_PREFIX,指定安裝路徑
  • CMAKE_INCLUDE_PATH,配合 FIND_FILE() 以及 FIND_PATH() 使用。如果標頭檔案沒有存放在常規路徑(/usr/include, /usr/local/include等),則可以通過這些變數就行彌補。如果不使用 FIND_FILE 和 FIND_PATH的話,CMAKE_INCLUDE_PATH,沒有任何作用。
  • CMAKE_LIBRARY_PATH,配合 FIND_LIBRARY() 使用,否則沒有任何作用。

  • CMAKE_MODULE_PATH,cmake 為上百個軟體包提供了查詢器(finder):FindXXXX.cmake當使用非cmake自帶的finder時,需要指定finder的路徑,這就是CMAKE_MODULE_PATH,配合 FIND_PACKAGE()使用。