CMake學習筆記二:cmake 常用變量和常用環境變量


1 cmake 變量引用的方式

使用 ${} 進行變量的引用。在 IF 等語句中,是直接使用變量名而不通過 ${} 取值。


2 cmake 自定義變量的方式

主要有隱式定義和顯式定義兩種,舉一個隱式定義的例子,就是 PROJECT 指令,他會隱式的定義<projectname>_BINARY_DIR 和<projectname>_SOURCE_DIR 兩個變量。

而顯式定義的例子,可以使用 SET 指令,就可以構建一個自定義變量了。


3 cmake 常用變量

1,PROJECT_BINARY_DIR

如果是 in source 編譯,這個變量指得就是工程頂層目錄,如果是 out-of-source 編譯,指的是工程編譯發生的目錄。另外 <projectname>_BINARY_DIR 和 CMAKE_BINARY_DIR 跟這個變量指代的內容是一致的。


2,PROJECT_SOURCE _DIR

不論采用何種編譯方式,都是工程頂層目錄。也就是在 in source 編譯時,他跟 PROJECT_BINARY_DIR 等變量一致。另外 <projectname>_SOURCE_DIR 和 CMAKE_SOURCE_DIR 跟這個變量指代的內容是一致的。


3,CMAKE_CURRENT_SOURCE_DIR

指的是當前處理的 CMakeLists.txt 所在的路徑。


4,CMAKE_CURRRENT_BINARY_DIR

如果是 in-source 編譯,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-ofsource 編譯,他指的是 target 編譯目錄。使用 ADD_SUBDIRECTORY(src bin) 可以更改這個變量的值。


5,CMAKE_CURRENT_LIST_FILE

輸出調用這個變量的 CMakeLists.txt 的完整路徑。


6,CMAKE_CURRENT_LIST_LINE

輸出這個變量所在的行。


7,CMAKE_MODULE_PATH

這個變量用來定義自己的 cmake 模塊所在的路徑。如果你的工程比較復雜,有可能會自己編寫一些 cmake 模塊,這些 cmake 模塊是隨你的工程發布的,為了讓 cmake 在處理CMakeLists.txt 時找到這些模塊,你需要通過 SET 指令,將自己的 cmake 模塊路徑設置一下。比如
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
這時候你就可以通過 INCLUDE 指令來調用自己的模塊了。


8,EXECUTABLE_OUTPUT_PATH 和 LIBRARY_OUTPUT_PATH

前者用來重新定義目標二進制可執行文件的存放位置,后者用來重新定義目標鏈接庫文件的存放位置。


9,PROJECT_NAME

返回通過 PROJECT 指令定義的項目名稱。


4 cmake 調用環境變量的方式

使用 $ENV{NAME} 指令就可以調用系統的環境變量了。比如

MESSAGE(STATUS “HOME dir: $ENV{HOME}”)

設置環境變量的方式是:

SET(ENV{變量名} 值)


5 系統信息

1,CMAKE_MAJOR_VERSION,CMAKE 主版本號,比如 2.4.6 中的 2
2,CMAKE_MINOR_VERSION,CMAKE 次版本號,比如 2.4.6 中的 4
3,CMAKE_PATCH_VERSION,CMAKE 補丁等級,比如 2.4.6 中的 6
4,CMAKE_SYSTEM,系統名稱,比如 Linux-2.6.22
5,CMAKE_SYSTEM_NAME,不包含版本的系統名,比如 Linux
6,CMAKE_SYSTEM_VERSION,系統版本,比如 2.6.22


6 主要的開關選項

1,CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS

用來控制 IF ELSE 語句的書寫方式。


2,BUILD_SHARED_LIBS

這個開關用來控制默認的庫編譯方式,如果不進行設置,使用 ADD_LIBRARY 並沒有指定庫類型的情況下,默認編譯生成的庫都是靜態庫。

如果 SET(BUILD_SHARED_LIBS ON)后,默認生成的為動態庫。


3,CMAKE_C_FLAGS

設置 C 編譯選項,也可以通過指令 ADD_DEFINITIONS()添加。


4,CMAKE_CXX_FLAGS

設置 C++編譯選項,也可以通過指令 ADD_DEFINITIONS()添加。


7 小結

本文介紹了一些較常用的 cmake 變量,這些變量僅僅是所有 cmake 變量的很少一部分,如果需要了解更多的 cmake 變量,更好的方式是閱讀一些成功項目的 cmake 工程文件,比如 KDE4 的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM