如何使用 CMake 声明像宏这样的函数

jpo*_*o38 6 macros preprocessor cmake

我找不到如何在 CMake 中声明像宏这样的函数。

我需要一个宏函数,如:

#define MYFUNC(foo) QString( foo + "_suffix" )
Run Code Online (Sandbox Code Playgroud)

由我的 CMakeLists.txt 文件定义。我试过:

add_definitions("-DMYFUNC(foo)=QString\(foo+\"_suffix\"\)")
Run Code Online (Sandbox Code Playgroud)

add_definitions("-DMYFUNC\(foo\)=QString\(foo+\"_suffix\"\)")
Run Code Online (Sandbox Code Playgroud)

但没有工作,编译器(VS2015)总是报告MYFUNC未定义......

Bot*_*tje 5

来自/D 上Visual Studio 文档

/D 选项不支持类似函数的宏定义。要插入无法在命令行上定义的定义,请考虑 /FI(名称强制包含文件)编译器选项。

为了完整起见,GCC确实 支持从命令行定义函数宏

如果您希望在命令行上定义一个类似函数的宏,请在等号(如果有)之前用括号写下它的参数列表。括号对大多数 shell 都有意义,因此您应该引用该选项。对于 sh 和 csh, -D'name(args...)=definition' 有效。