例如,在编译.c文件时,我希望cmake只打印
CC xxx.c
到stdout,比如linux kbuild。
ufj5ltwl1#
CMake输出可以通过取消CMake生成的标准消息并改为在启动器脚本中输出自定义消息来自定义。将以下代码添加到最外层的CMakeLists.txt:
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来源树状目录的根目录:
OFF
custom_output.sh
#!/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脚本以相同的方式自定义链接器输出。
ygya80vv2#
这在当前版本的CMake中是不可能的,除非你自己编辑源代码。当然sed和awk会帮助你。
CMake
sed
awk
2条答案
按热度按时间ufj5ltwl1#
CMake输出可以通过取消CMake生成的标准消息并改为在启动器脚本中输出自定义消息来自定义。将以下代码添加到最外层的
CMakeLists.txt
:将全域RULE_MESSAGES属性设定为
OFF
会隐藏标准消息。全域RULE_LAUNCH_COMPILE属性会设定为名为custom_output.sh
的自订启动指令码,此指令码需要新增至CMake来源树状目录的根目录:需要设置脚本的可执行位。
也可以通过设置RULE_LAUNCH_LINK脚本以相同的方式自定义链接器输出。
ygya80vv2#
这在当前版本的
CMake
中是不可能的,除非你自己编辑源代码。当然sed
和awk
会帮助你。