我正在尝试替换硬编码预处理器
#define MY_FILE_PATH "/usr/local/myfile"
在 cmake 中使用 add_definitions
add_definitions(-DMY_FILE_PATH=${MY_FILE_PATH})
在调用 cmake 时我使用-DMY_FILE_PATH=/usr/tmp/myfile
但会出现各种错误,例如,“/”标记之前的预期主表达式和 tmp 找不到等。
是否可以在我的场景中使用 add_definitions 或者我应该尝试 configure_file。
add_definitions 只支持整数值吗?
这里的答案和谷歌搜索互联网上的答案都不适合我(Windows 上的 CMake 3.4.1)。我终于找到了解决方案,所以在这里,希望这对某人有所帮助:
诀窍是引用您要添加的每个定义的全部内容add_definitions
,而不仅仅是它的值部分,并转义将进入 shell 的内部引号。请记住,每个定义应包含一个单独的字符串。像这样:
add_definitions( "-D_SOME_DEFINE=\"Some value with spaces, etc\"" "-D DEF1=\"Another string\"")
答案不仅限于路径,而且适用于您想要作为预处理器指令提供的任何通用字符串。这是我能够提供包含空格字符的字符串的唯一方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)