escaping - 为什么 CMake 在执行命令时在空格前加上反斜杠?

标签 escaping cmake

我在 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/

相关文章:

c++ - CMake:如何指定自定义导入库名称(MSVC)

string - 如何在 Crystal Reports 中的 StringVar 中插入换行符

javascript - Jquery 选择带斜杠的属性

CMake交叉编译不会跳过编译器测试

unit-testing - 单元测试构建文件

cmake - 我可以在 cmake 时获取 CMake 为特定 vcproj 生成的 GUID 吗?

mysql - MySQL 中不可打印的字符

c - 在C中使用bash系统调用编写进行bash系统调用的C

带有转义字符的 JavaScript 警报失败

linux - 使用 OpenSSL 编译时缺少 CMake 变量