CMake忽略自定义目标的返回

时间:2018-04-25 16:23:15

标签: cmake

我已将此自定义目标添加到我的CMakeList.txt文件中。

系统:Windows 7,TDMGCC MinGW32和Ninja最新的GitHub。

ADD_CUSTOM_TARGET(unittest_run
    COMMAND test1.exe > result.testresult
    COMMAND test2.exe >> result.testresult
    COMMAND type result.testresult
)

问题是,当test1.exe失败时,我会生成一个失败输出,但似乎还会出现一些导致问题的错误代码。 ninja: build stopped: subcommand failed.

如何告诉CMake它应该忽略返回错误?

2 个答案:

答案 0 :(得分:3)

您可以尝试使用条件OR语句,该语句仅在前面的语句失败时运行,并从辅助语句生成成功的返回码

从“{条带执行”this page开始,如果第一个失败,您可以使用||有条件地执行辅助语句

  

仅当command1失败(OR)

时才执行command2
    command1 || command2

this SO answer,可以使用(exit 0)

生成成功的返回代码
  

true大致相当于(exit 0)(括号创建一个退出状态为0的子shell,而不是退出当前的shell。

全部放在一起:

ADD_CUSTOM_TARGET(unittest_run
    COMMAND test1.exe > result.testresult  || (exit 0)
    COMMAND test2.exe >> result.testresult || (exit 0)
    COMMAND type result.testresult
)

答案 1 :(得分:0)

它只有这样:

COMMAND 
test1.exe > result.testresult & 
test2.exe >> result.testresult || 
(exit 0) &
type result.testresult