我在CMakeLists.txt中有一个自定义命令:
set(testfiles "test1 test2")
add_custom_target(testtouch COMMAND touch ${testfiles})
Run Code Online (Sandbox Code Playgroud)
当我运行"make testtouch VERBOSE = 1"时,我看到它执行:
touch test1\ test2
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,但我在一个真实的项目中遇到了这个问题而且"\"正在破坏命令.请注意,我从Find脚本获取变量(此处为testfiles),并且不能只删除双引号.
为什么CMake会这样做?
怎么避免呢?
因为有时cmake list变量类型和cmake字符串文字之间的区别变得很重要.
尝试将变量设置更改为以下内容以避免此问题:
set(testfiles "test1" "test2")
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用多个参数进行类似的操作,有些是字符串,有些不是,即:
add_custom_target(externalProject COMMAND make -s VALUE1:="${argument1}" VALUE2:=${argument2} VALUE3:="${argument3}" ...)
Run Code Online (Sandbox Code Playgroud)
argument3包含在哪里"VAL1 VAL2 VAL3"。
我发现用分号替换空格解决了创建 makefile;时的问题。cmake
| 归档时间: |
|
| 查看次数: |
3984 次 |
| 最近记录: |