cmake中巨集的使用

2021-08-20 03:54:32 字數 1026 閱讀 5916

首先貼乙個例子進行分析

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 需要注意的是,巨集中如果...