CMake--變量


1.一般變量

1)CMake變量引用的方式

使用${}進行變量的引用。例如:

${PROJECT_NAME} #返回項目名稱

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

2)cmake自定義變量的方式

cmake變量定義的方式有兩種:隱式定義和顯式定義。

隱式定義

前面舉了一個隱式定義的例子,就是PROJECT指令,他會隱式的定義 _BINARY_DIR和 _SOURCE_DIR兩個變量。

顯示定義

顯式定義的例子我們前面也提到了,使用 SET 指令,就可以構建一個自定義變量了。

比如:

SET(HELLO_SRC main.c)

就可以通過${HELLO_SRC}來引用這個自定義變量(main.c)了.

2. 環境變量

1)調用環境變量的方式

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

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

2)設置環境變量的方式

SET(ENV{ 變量名 } 值 )

3. CMake常用變量

變量名 變量說明
PROJECT_NAME 返回通過PROJECT指令定義的項目名稱
PROJECT_SOURCE_DIR CMake源碼地址,即cmake命令后指定的地址
PROJECT_BINARY_DIR 運行cmake命令的目錄,通常是PROJECT_SOURCE_DIR下的build目錄
CMAKE_MODULE_PATH 定義自己的cmake模塊所在的路徑
CMAKE_CURRENT_SOURCE_DIR 當前處理的CMakeLists.txt所在的路徑
CMAKE_CURRENT_LIST_DIR 當前文件夾路徑
CMAKE_CURRENT_LIST_FILE 輸出調用這個變量的CMakeLists.txt的完整路徑
CMAKE_CURRENT_LIST_LINE 輸出這個變量所在的行
CMAKE_RUNTIME_OUTPUT_DIRECTORY 生成可執行文件路徑
CMAKE_LIBRARY_OUTPUT_DIRECTORY 生成庫的文件夾路徑
CMAKE_BUILD_TYPE 指定基於make的產生器的構建類型(Release,Debug)
CMAKE_C_FLAGS *.C文件編譯選項,如 -std=c99 -O3 -march=native
CMAKE_CXX_FLAGS *.CPP文件編譯選項,如 -std=c++11 -O3 -march=native
CMAKE_CURRENT_BINARY_DIR target編譯目錄
CMAKE_INCLUDE_PATH 環境變量,非cmake變量
CMAKE_LIBRARY_PATH 環境變量
CMAKE_STATIC_LIBRARY_PREFIX 靜態庫前綴, Linux下默認為lib
CMAKE_STATIC_LIBRARY_SUFFIX 靜態庫后綴,Linux下默認為.a
CMAKE_SHARED_LIBRARY_PREFIX 動態庫前綴,Linux下默認為lib
CMAKE_SHARED_LIBRARY_SUFFIX 動態庫后綴,Linux下默認為.so
BUILD_SHARED_LIBS 如果為ON,則add_library默認創建共享庫
CMAKE_INSTALL_PREFIX 配置安裝路徑,默認為/usr/local
CMAKE_ABSOLUTE_DESTINATION_FILES 安裝文件列表時使用ABSOLUTE DESTINATION 路徑
CMAKE_AUTOMOC_RELAXED_MODE 在嚴格和寬松的automoc模式間切換
CMAKE_BACKWARDS_COMPATIBILITY 構建工程所需要的CMake版本
CMAKE_COLOR_MAKEFILE 開啟時,使用Makefile產生器會產生彩色輸出
CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 用來控制IF ELSE語句的書寫方式

4.系統信息

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
7,CMAKE_SYSTEM_PROCESSOR ,處理器名稱,比如 i686.
8,UNIX ,在所有的類 UNIX 平台為 TRUE ,包括 OS X 和 cygwin
9,WIN32 ,在所有的 win32 平台為 TRUE ,包括 cygwin

5.主要的開關選項:

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() 添加。


免責聲明!

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



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