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

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

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应该忽略返回错误?

最佳答案

您可以尝试使用条件OR语句,该条件OR语句仅在前面的语句失败时才运行,并从辅助语句生成成功的返回码
如果第一个失败,则可以从“条件执行”的this page中使用||有条件地执行第二条语句

仅在command1失败(或)时执行command2

    command1 || command2


this SO answer可以使用(exit 0)生成成功的返回码

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

放在一起:
ADD_CUSTOM_TARGET(unittest_run
    COMMAND test1.exe > result.testresult  || (exit 0)
    COMMAND test2.exe >> result.testresult || (exit 0)
    COMMAND type result.testresult
)

10-06 01:42