CMake 入門/常用變數

以下是常用的 CMake 內定變數參考,內容並不完備。如果需要獲得完整的變數說明,可輸入下列指令

cmake --help-variables filename.htm

會在目前的資料夾下產生filename.htm,內容為所有內建變數的說明。

系統和編譯器資訊

编辑

CMake 系統資訊

编辑

以下皆為字串類型

CMAKE_SYSTEM
系統全名,如 "Linux-2.4.22","FreeBSD-5.4-RELEASE" 或 "Windows 5.1"
CMAKE_SYSTEM_NAME
系統名稱,如 "Linux", "FreeBSD" or "Windows"
CMAKE_SYSTEM_VERSION
只有 CMAKE_SYSTEM 當中版本的部分
CMAKE_SYSTEM_PROCESSOR
CPU 名稱,如 "Intel(R) Pentium(R) M processor 2.00GHz"
CMAKE_GENERATOR
在命令列所指定的 Generator 名稱

系統旗標

编辑

以下皆為 BOOL 類型,若是與目前所屬的作業系統/編譯器相符,其值為True,否則為 False。

UNIX
WIN32
在 MINGW、CYGWIN、MSYS 亦為 True
APPLE
MINGW
MSYS
CYGWIN
BORLAND
WATCOM
MSVC, MSVC_IDE, CMAKE_COMPILER_2005, MSVC60, MSVC70, MSVC71, MSVC80, MSVC90, MSVC10
不同版本的微軟 Visual C++ 專案檔
CMAKE_COMPILER_IS_GNUCC
目前使用 GNU C 編譯器
CMAKE_COMPILER_IS_GNUCXX
目前使用 GNU C++ 編譯器

資料夾和檔案資訊

编辑
CMAKE_SOURCE_DIR
內容為 source tree 根目錄的完整路徑,也就是 CMake 開始建置過程的進入點。
CMAKE_BINARY_DIR
內容為 binary tree 根目錄的完整路徑,在 in-source build 的時候值與 CMAKE_SOURCE_DIR 相同。
PROJECT_SOURCE_DIR
目前正在處理中的專案最上層目錄,即內含 project() 指令的 CMakeLists 所在資料夾。
PROJECT_BINARY_DIR
目前所屬專案的建置根目錄。在 in-source build 時和 PROJECT_SOURCE_DIR 相同。
CMAKE_CURRENT_SOURCE_DIR
目前正在處理的 CMakeLists.txt 所在位置。
CMAKE_CURRENT_BINARY_DIR
目前正在處理的 CMakeLists.txt 對應的建置資料夾位置。在 in-source build 時和 CMAKE_CURRENT_SOURCE_DIR 相同。

編譯選項

编辑
BUILD_SHARED_LIBS
將所有程式庫 target 設成共享程式庫,只對未指定類型的程式庫有效。
CMAKE_BUILD_TYPE
控制建置類型,值可為下列之一:
  • None: 編譯器預設值
  • Debug: 產生除錯資訊
  • Release: 進行最佳化
  • RelWithDebInfo: 進行最佳化,但仍然會啟用 DEBUG flag
  • MinSizeRel: 進行程式碼最小化

特別要注意的是,CMAKE_BUILD_TYPE 在 configuration time 不會自動初始化為可讀取的變數,必須要在使用者指定建置類型後才可以利用。

CMAKE_C_FLAGS
在呼叫 C 編譯器時附加的額外選項,對所有的建置類型都有效。
CMAKE_C_FLAGS_DEBUG
在呼叫 C 編譯器時附加的額外選項。只有在建置類型為 Debug 時才會套用。
CMAKE_C_FLAGS_RELEASE
在呼叫 C 編譯器時附加的額外選項。只有在建置類型為 Release 時才會套用。
CMAKE_C_FLAGS_RELWITHDEBINFO
在呼叫 C 編譯器時附加的額外選項。只有在建置類型為 RelWithDebInfo 時才會套用。
CMAKE_CXX_FLAGS、CMAKE_CXX_FLAGS_DEBUG、CMAKE_CXX_FLAGS_RELEASE、CMAKE_CXX_FLAGS_RELWITHDEBINFO
同上,但作用在 C++ 編譯器 。
CMAKE_EXE_LINKER_FLAGS
生成執行檔時所使用的連結選項。
CMAKE_SHARED_LINKER_FLAGS
生成 shared library 時所使用的連結選項。