【问题标题】:How can I run a command inside a command in CMake Macro如何在 CMake 宏的命令中运行命令
【发布时间】:2013-06-20 00:28:57
【问题描述】:

我想把文件内容变成一个参数。参数转到正在测试的可执行文件。这就是我所拥有的

ADD_TEST (
    NAME ${ARGV0}
    COMMAND
        ${DIR}/script.sh
        ${executable}\ --arg1\ input
)

我想将参数放在一个文件中,并将其作为输入提供给可执行文件。我想要这样的东西:

ADD_TEST (
    NAME ${ARGV0}
    COMMAND
        ${DIR}/script.sh
        ${executable}\ $(cat ${ARGS_file})
)

或者像这样

ADD_TEST (
    NAME ${ARGV0}
    COMMAND
        ${DIR}/script.sh
        ${executable}\ `cat ${ARGS_file}`
)

或者像这样

ADD_TEST (
    NAME ${ARGV0}
    COMMAND
        ${DIR}/script.sh
        ${executable}\ $(< ${ARGS_file})
)

以上三个代码都不起作用。当我在 CMake 之外尝试它们时,它们运行良好。但在 CMake 内部它们不起作用。

【问题讨论】:

  • CMake 不使用 shell 来评估参数。如果您想要这种行为并且您确定您只在 linux 上运行,您可以尝试这样的操作: COMMAND bash -c "${executable} $(cat ${ARGS_file})" 像这样评估传递给 bash再次。

标签: bash shell cmake ctest


【解决方案1】:

对于更通用的方法,请使用execute_commandfile(WRITE &lt;path&gt; &lt;contents&gt;),然后使用include(&lt;path&gt;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2014-10-30
    相关资源
    最近更新 更多