【发布时间】:2017-03-08 22:13:55
【问题描述】:
灵感来自: https://cmake.org/cmake/help/v3.0/command/macro.html
我愿意:
macro(ARGS_TEST)
message(WARNING "\nARGN: ${ARGN}\n")
foreach(arg IN LISTS ARGN)
message(WARNING "\n ARG : ${arg} \n")
endforeach()
endmacro()
ARGS_TEST(test 1 2 3)
哪个打印:
ARGN: test;1;2;3
但此后什么都没有,这意味着似乎没有发生对 ARGN 的迭代。
我缺少什么?
回答以下问题: Passing a list to a cmake macro
显示如何将参数打印为列表,但不显示如何迭代它们
【问题讨论】:
-
你错过了,在宏
ARGN中是 not a normal variable。关于克服这个列表见这里:stackoverflow.com/questions/5248749/… -
@Tsyvarev 是的,但我正在遵循文档中的示例 --;关于可能的重复,它似乎没有回答我的问题,它将列表转换为字符串而不是允许对其进行迭代(或者我无法理解答案?)
-
I am following the example from the doc- 如果你谈论最后一个例子,它使用宏调用函数内部。在这种情况下,宏从函数中获取ARGN 变量。仔细阅读。但是对于您的情况,重复项实际上是错误的,抱歉。
标签: macros cmake arguments iteration