【发布时间】:2012-04-03 15:58:18
【问题描述】:
例如,在编译 .c 文件时,我希望 cmake 只打印
CC xxx.c
到标准输出,比如 linux kbuild。
【问题讨论】:
标签: cmake build-system
例如,在编译 .c 文件时,我希望 cmake 只打印
CC xxx.c
到标准输出,比如 linux kbuild。
【问题讨论】:
标签: cmake build-system
可以通过抑制 CMake 生成的标准消息并在启动器脚本中输出自定义消息来自定义 CMake 输出。将以下代码添加到您最外层的CMakeLists.txt:
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_SOURCE_DIR}/custom_output.sh")
将全局RULE_MESSAGES 属性设置为OFF 将抑制标准消息。
全局 RULE_LAUNCH_COMPILE 属性设置为名为 custom_output.sh 的自定义启动脚本,需要将其添加到 CMake 源代码树的根目录:
#!/bin/sh
# shell script invoked with the following arguments
# $(CXX) $(CXX_DEFINES) $(CXX_FLAGS) -o OBJECT_FILE -c SOURCE_FILE
# extract parameters
SOURCE_FILE="${@: -1:1}"
OBJECT_FILE="${@: -3:1}"
echo "CC `basename \"$SOURCE_FILE\"`"
# invoke compiler
exec "$@"
需要设置脚本的可执行位。
也可以通过设置RULE_LAUNCH_LINK 脚本以同样的方式自定义链接器输出。
【讨论】:
这在CMake 的当前版本中是不可能的,除非您自己编辑源代码。当然sed 和awk 会帮助你。
【讨论】: