cmake在add_custom_target命令中错误地解析了参数

时间:2012-01-31 13:32:49

标签: cmake

我写了一个像这样的cmake命令:

add_custom_target(testar
              COMMAND clearmake -C gnu ${CMD_ARGS})

CMD_ARGS在命令行中定义,如:

cmake -DCMD_ARGS="-d -w" 

但是在生成的makefile中,-d -w更改为-d\ -w;它在所有空格之前添加了一个斜杠,结果是:

clearmake -C gnu -d\ -w 

如果我在VERBATIM中使用add_custom_target选项,则cmake不会添加斜杠,但会引用参数

clearmake -C gnu "-d -w"

这是不正确的,我想:

clearmake -C gnu -d -w

生成上述目标所需的语法是什么?

1 个答案:

答案 0 :(得分:2)

参数应该是list,“-d -w”不是(它只是一个字符串)。你可以做两件事:

  1. 将参数传递为-DCMD_ARGS =“ - d; -w”(空格为分号)
  2. 使用CMD_ARGS上的separate_arguments命令,然后将其传递到add_custom_target(这会使空格符号为冒号以生成正确的list)。
  3. add_custom_target命令中的任何内容都不需要更改,CMake的输入不正确,可以用1修复或由2处理。