在cmake中,我如何始终执行流程? (或从add_custom_command捕获stdout)

时间:2017-03-31 00:40:31

标签: cmake catkin add-custom-command

我在cmake项目中使用生成的文件。我有一个脚本从一些输入生成源代码,如果给出不同的命令行参数,相同的脚本也可以验证输入,如下所示:

generate_code.py --generate

generate_code.py --validate

如果输入无效,--validate模式会将错误打印到stdout,我希望这些错误可见。我目前的设置是在--validate中使用execute_process,在--generate中使用add_custom_command。这有效,但在输入更改时不会从--validate模式打印用户友好的错误消息,因为execute_process不会再次运行。

表现这些错误的最佳方法是什么?如果我可以强制execute_process始终运行,那可行,或者如果我stdout失败并且表现出来--generate,我可以修改--generate选项进行打印友好的错误消息,然后显示它们。我该怎样做其中一个或两个?

1 个答案:

答案 0 :(得分:0)

只要您传递ALL参数,每次执行构建时都会重新运行add_custom_target statements中的命令。这可能就是你要找的东西。

或者,您可以将generate_code.py的输入作为自定义命令的依赖项(如果它们尚未存在),并使generate_code.py --validate之前的自定义命令执行generate_code.py --generate。这样,当需要重建时,它将被重新验证,而不是在任何其他时间。