Cmake 如何访问封闭函数';宏中的参数?

Cmake 如何访问封闭函数';宏中的参数?,cmake,Cmake,我想实现一个类似于cmake\u parse\u arguments(parse\u ARGV…)的宏,即访问封闭函数的参数的宏。不幸的是,${ARGN}、${ARGC}和${ARGVn}在宏中具有特殊意义,它们调用宏参数字符串替换。我想访问封闭函数作用域的ARGN和ARGC和ARGVn变量。解决方法是使用中间变量引用作为转义。只有最里面的替换是宏替换,因此将${${}ARGV0}宏替换为${${}ARGV0},然后第一个变量替换给出${ARGV0},第二个变量替换生成包含宏的最里面函数范围中第

我想实现一个类似于
cmake\u parse\u arguments(parse\u ARGV…)
的宏,即访问封闭函数的参数的宏。不幸的是,
${ARGN}
${ARGC}
${ARGVn}
在宏中具有特殊意义,它们调用宏参数字符串替换。我想访问封闭函数作用域的
ARGN
ARGC
ARGVn
变量。

解决方法是使用中间变量引用作为转义。只有最里面的替换是宏替换,因此将
${${}ARGV0}
宏替换为
${${}ARGV0}
,然后第一个变量替换给出
${ARGV0}
,第二个变量替换生成包含宏的最里面函数范围中第一个参数的值

因此:

输出:

1:bar
这允许实现类似于
cmake_parse_arguments
的宏,但在解析封闭函数的参数时执行其他操作

如果
${}
变量替换触发错误,可以使用任何未设置的变量,例如
${${mgUXpKW8srYnwnSP}ARGV1}

1:bar