[转]
cmake中宏的使用
原文路径:
https://blog.csdn.net/qq_29573053/article/details/80392441
首先贴一个例子进行分析
-
set(var "ABC")
-
-
macro(Moo arg)
-
message("arg = ${arg}")
-
set(arg "abc")
-
message("# After change the value of arg.")
-
message("arg = ${arg}")
-
endmacro()
-
message("=== Call macro ===")
-
Moo(${var})
这段使用cmake 的输出如下:
-
=== Call macro ===
-
arg = ABC
-
# After change the value of arg.
-
arg = ABC
-
=== Call func
一开始感觉很奇怪,明明设置set(arg "abc")了,怎么没有生效?为什么是这样子的输出。研究一番发现,macro(Moo arg)里面,会将${arg}的内容用实际传入宏的参数替换,set(arg "abc")的作用只是设置了一个arg的变量,我在调用宏后面打印出来:
-
set(var "ABC")
-
macro(Moo arg)
-
message("arg = ${arg}")
-
set(arg "abc")
-
message("# After change the value of arg.")
-
message("arg = ${arg}")
-
endmacro()
-
message("=== Call macro ===")
-
Moo(${var})
-
message("${arg}")
这是后的输出如下:
-
=== Call macro ===
-
arg = ABC
-
# After change the value of arg.
-
arg = ABC
-
abc
这里和正常c里面的宏是一样的,仅仅是个代码替换的作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)