【发布时间】:2021-01-15 03:24:49
【问题描述】:
我使用 CMake。自定义构建步骤会在失败时保存错误输出。
FIND_PROGRAM (BASH bash HINTS /bin)
SET (BASH_CMD "my-script input.file >output.file 2>error.file")
ADD_CUSTOM_COMMAND (
OUTPUT output.file
COMMAND ${CMAKE_COMMAND} -E env ${BASH} -c "${BASH_CMD}"
...)
这行得通。如果my-script 对给定的input.file 失败,则stderr 将保存在error.file 中,但是当我运行make 并且目标无法构建时,正常输出不会使error.file 的位置明显。 (这个文件的实际路径是比较纠结的生成的。)
我不希望在make 期间在终端中显示嘈杂的标准错误。我想做类似的事情
MESSAGE ("input.file failed, see error.file")
(最好是红色或其他颜色)在output.file 的命令失败时执行。
我可以在 CMakeLists.txt 食谱中表达这种行为吗?
【问题讨论】:
-
在命令末尾添加
|| (echo "..." && /bin/false)有什么问题?例如。my-script input.file >output.file 2>error.file || (echo "input.file failed, see error.file" && /bin/false)。或者,您可以创建一个独立的包装脚本,它将原始脚本的输出重定向到一个文件中,并在原始脚本失败时打印一条消息。
标签: cmake