CMake 入門/常用變數
< 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 時所使用的連結選項。