【问题标题】:cmake parse arguments incorrectly in add_custom_target commandcmake 在 add_custom_target 命令中错误地解析参数
【发布时间】:2022-03-17 22:39:44
【问题描述】:

我写了一个这样的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 

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

的参数
clearmake -C gnu "-d -w"

这是不正确的,我想:

clearmake -C gnu -d -w

生成上述目标需要什么语法?

【问题讨论】:

    标签: cmake


    【解决方案1】:

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

    1. 以 -DCMD_ARGS="-d;-w" 形式传入参数(空格是分号)
    2. 在将CMD_ARGS 传递给add_custom_target 之前,在CMD_ARGS 上使用separate_arguments 命令(这会使空格分号生成正确的list)。

    add_custom_target 命令中没有任何内容需要更改,CMake 的输入不正确,可以用 1 修复或用 2 处理。

    【讨论】:

    • @tpg2114 我不明白为什么COMMAND 中的前几件事不需要用分号分隔?是COMMAND clearmake -C gnu ${CMD_ARGS},但为什么不是COMMAND clearmake;-C;gnu;${CMD_ARGS}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2012-07-20
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多