首先貼乙個例子進行分析
set(var "abc")
macro(moo arg)
message("arg = $")
set(arg "abc")
message("# after change the value of arg.")
message("arg = $")
endmacro()
message("=== call macro ===")
moo($)
這段使用cmake 的輸出如下:
=== call macro ===
arg = abc
# after change the value of arg.
arg = abc
=== call func
一開始感覺很奇怪,明明設定set(arg "abc")了,怎麼沒有生效?為什麼是這樣子的輸出。研究一番發現,macro(moo arg)裡面,會將$的內容用實際傳入巨集的引數替換,set(arg "abc")的作用只是設定了乙個arg的變數,我在呼叫巨集後面列印出來:
set(var "abc")
macro(moo arg)
message("arg = $")
set(arg "abc")
message("# after change the value of arg.")
message("arg = $")
endmacro()
message("=== call macro ===")
moo($)
message("$")
這是後的輸出如下:
=== call macro ===
arg = abc
# after change the value of arg.
arg = abc
abc
這裡和正常c裡面的巨集是一樣的,僅僅是個**替換的作用。 cmake取消巨集定義 CMake基本使用
cmake是個很方便的構建系統。官方的文件寫的很明白,就是有點長。於是,根據自己的使用情況,挑選其中最重要的,簡要說明於下 cmakelists.txt的編寫 cmakelists.txt的命令不區分大小寫。基本結構 最低版本宣告,如果本機的cmake版本小於這個,會告警 cmake minimum...
CMake 常用巨集分享
在本人多年的cmake使用過程中,有兩個自定義巨集被廣泛且頻繁使用。分別是 根據專案目錄結構,分組顯示c 檔案,實現目錄結構與專案結構的對應。macro group files macro group files src files root path set cur dir foreach gro...
程式設計中巨集的使用
為尊重原創,請註明出處 編寫 中,巨集的使用無處不在,總結一下大概以下幾種 1 定義一些常量,或者一些基位址,方便在版本更換時,只需要適配巨集,而不需要修改 define gic cpu base addr 0xa0000000 0x1000 define pai 3.14 需要注意的是,巨集中如果...