我在 CMakeLists.txt 中有一个自定义命令:
set(testfiles "test1 test2")
add_custom_target(testtouch COMMAND touch ${testfiles})
当我运行“make testtouch VERBOSE=1”时,我看到它执行:
touch test1\ test2
这只是一个例子,但我在一个真实的项目中遇到了这个问题,“\”正在破坏命令。请注意,我从 Find 脚本中获取变量(此处为 testfiles),并且不能去掉双引号。
为什么 CMake 这样做?
如何避免呢?
最佳答案
因为有时 cmake 列表变量类型和 cmake 字符串文字之间的区别变得很重要。
尝试将变量设置更改为以下内容以避免出现此问题:
set(testfiles "test1" "test2")
关于escaping - 为什么 CMake 在执行命令时在空格前加上反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8925396/