4

例如,在编译 .c 文件时,我希望 cmake 只打印

CC    xxx.c

到标准输出,如 linux kbuild。

4

2 回答 2

8

可以通过抑制 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脚本以相同的方式自定义链接器输出。

于 2012-03-23T20:56:16.147 回答
1

CMake如果不自己编辑源代码,这在当前版本中是不可能的。当然sedawk会帮助你。

于 2012-03-23T15:37:32.963 回答