如何自定义cmake输出

ttp71kqs  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(261)

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

CC    xxx.c

到stdout,比如linux kbuild。

ufj5ltwl

ufj5ltwl1#

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

ygya80vv

ygya80vv2#

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

相关问题