前面我們已經提到了,使用${}進行變數的引用。在 if 等語句中,是直接使用變數名而不 通過${}取值
cmake主要有隱式定義和顯式定義兩種
前面舉了乙個隱式定義的例子,就是 project 指令,他會隱式的定義_binary_dir 和_source_dir 兩個變 量。
使用 set 指令,就可以構建乙個自定義變數了。 比如:
set(hello_src main.source_pathc),就project_binary_dir可以通過 $來引用這個自定義變數了。
1,cmake_binary_dir
project_binary_dir
_binary_dir
這三個變數指代的內容是一致的,如果是in source編譯,指得就是工程頂層目錄,如果 是 out-of-source 編譯,指的是工程編譯發生的目錄。project_binary_dir 跟其他 指令稍有區別,現在,你可以理解為他們是一致的。
2,cmake_source_dir project_source_dir _source_dir
這三個變數指代的內容是一致的,不論採用何種編譯方式,都是工程頂層目錄。 也就是在in source編譯時,他跟cmake_binary_dir等變數一致。
project_source_dir 跟其他指令稍有區別,現在,你可以理解為他們是一致的。 3,cmake_current_source_dir
指的是當前處理的 cmakelists.txt 所在的路徑,比如上面我們提到的 src 子目錄。 4,cmake_currrent_binary_dir
如果是 in-source 編譯,它跟 cmake_current_source_dir 一致,如果是 out-of- source 編譯,他指的是 target 編譯目錄。
使用我們上面提到的add_subdirectory(src bin)可以更改這個變數的值。
使用set(executable_output_path 《新路徑》)並不會對這個變數造成影響,它僅僅 修改了最終目標檔案存放的路徑。
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 $/cmake) 這時候你就可以通過 include 指令來呼叫自己的模組了。
8,executable_output_path 和 library_output_path 分別用來重新定義最終結果的存放目錄,前面我們已經提到了這兩個變數。
9,project_name
返回通過 project 指令定義的專案名稱。
message(status "this is cmake_binary_dir:" $)
message(status "this is project_binary_dir:" $)
message(status "this is cmake_source_dir:" $)
message(status "this is project_source_dir:" $)
message(status "this is cmake_current_source_dir:" $)
message(status "this is cmake_current_binary_dir:" $)
message(status "this is cmake_current_list_file:" $)
message(status "this is cmake_current_list_line:" $)
set(cmake_module_path $/cmake)
message(status "this is cmake_module_path:" $)
message(status "this is executable_output_path:" $)
message(status "this is library_output_path:" $)
message(status "this is project_name:" $)
-- this is cmake_binary_dir:/root/cpp_test/backup/cmake_test/t5/build
-- this is project_binary_dir:/root/cpp_test/backup/cmake_test/t5/build
-- this is cmake_source_dir:/root/cpp_test/backup/cmake_test/t5
-- this is project_source_dir:/root/cpp_test/backup/cmake_test/t5
-- this is cmake_current_source_dir:/root/cpp_test/backup/cmake_test/t5/src
-- this is cmake_current_binary_dir:/root/cpp_test/backup/cmake_test/t5/build/bin
-- this is cmake_current_list_file:/root/cpp_test/backup/cmake_test/t5/src/cmakelists.txt
-- this is cmake_current_list_line:12
-- this is cmake_module_path:/root/cpp_test/backup/cmake_test/t5/cmake
-- this is executable_output_path:
-- this is library_output_path:
-- this is project_name:hello
使用$env指令就可以呼叫系統的環境變數了。 比如
message(status 「home dir: $env」) 設定環境變數的方式是:
set(env 值)
1,cmake_include_current_dir
自動新增 cmake_current_binary_dir 和 cmake_current_source_dir 到當前處理
的 cmakelists.txt。相當於在每個 cmakelists.txt 加入: include_directories($
$)
2,cmake_include_directories_project_before
將工程提供的頭檔案目錄始終至於系統頭檔案目錄的前面,當你定義的標頭檔案確實跟系統發
生衝突時可以提供一些幫助。
3,cmake_include_path 和 cmake_library_path 我們在上一節已經提及。
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
message(status "this is cmake_major_version:" $)
message(status "this is cmake_minor_version:" $)
message(status "this is cmake_patch_version:" $)
message(status "this is cmake_system:" $)
message(status "this is cmake_system_name:" $)
message(status "this is cmake_system_version:" $)
message(status "this is cmake_system_processor:" $)
message(status "this is unix:" $)
message(status "this is win32:" $)
-- this is cmake_major_version:3
-- this is cmake_minor_version:13
-- this is cmake_patch_version:2
-- this is cmake_system:linux-3.10.0-862.3.2.el7.x86_64
-- this is cmake_system_name:linux
-- this is cmake_system_version:3.10.0-862.3.2.el7.x86_64
-- this is cmake_system_processor:x86_64
CMake常用變數
cmake變數 cmake共用七種變數,如下所示 目錄 1 提供資訊的變數。2 控制變數。3 描述系統的變數。4 控制構建過程的變數。5 語言變數。6 ctest變數。7 cpack變數。first 提供資訊的變數 cmake binary dir cmake source dir cmake cu...
變數和常量
package com.xy.pf.test.xiti 關鍵字static 1.靜態方法和靜態變數是屬於某乙個類,而不屬於類的物件 2.靜態方法和靜態變數的引用直接通過類名呼叫 3.在靜態方法中不能呼叫非靜態的方法和引用非靜態的成員變數 反之,則可以 4.可以用類的物件obj來呼叫靜態的方法meth...
常量和變數
常量 固定的資料 四類 整型 浮點型 單精度和雙精度 字元型 字串型 字元型常量 不能是中文,單引號引起來的 字串型常量 雙引號引起來的 變數 表示乙個需要經常改變或者不確定的資料 特點 1.建立了乙個變數相當於在記憶體中占用了一片空間 2.空間的大小是固定的,但裡面的資料可以改變 3.同乙個作用域...