如何自定义cmake输出 [英] How to customize cmake output
问题描述
例如,在编译.c文件时,我希望cmake只打印
CC xxx.c
解决方案。
CMake输出可以通过抑制由CMake生成的标准消息和在启动程序脚本中输出自定义消息来定制。将以下代码添加到您最外面的 CMakeLists.txt
:
set_property GLOBAL PROPERTY RULE_MESSAGES OFF)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE$ {CMAKE_SOURCE_DIR} /custom_output.sh)
$ b b
将全局 RULE_MESSAGES 属性设置为 OFF
将禁止标准消息。
全局 RULE_LAUNCH_COMPILE 属性设置为需要添加到CMake源代码树根目录的自定义启动脚本 custom_output.sh
:
#!/ bin / sh
使用以下参数调用shell脚本
#$(CXX)$(CXX_DEFINES)$(CXX_FLAGS)-o OBJECT_FILE -c SOURCE_FILE
#提取参数
SOURCE_FILE =$ {@:-1:1}
OBJECT_FILE =$ {@:-3:1}
echoCC`basename \$ SOURCE_FILE\`
#调用编译器
exec$ @
脚本的可执行位需要设置。
链接器输出可以定制以相同的方式设置 RULE_LAUNCH_LINK 脚本。 / p>
For example, when compiling .c files, I want cmake to just print
CC xxx.c
to stdout, like linux kbuild.
解决方案 CMake output can be customized by suppressing the standard messages produced by CMake and outputting a custom message in a launcher script instead. Add the following code to your outermost CMakeLists.txt
:
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_SOURCE_DIR}/custom_output.sh")
Setting the global RULE_MESSAGES property to OFF
will suppress the standard messages.
The global RULE_LAUNCH_COMPILE property is set to a custom launch script named custom_output.sh
which needs to be added to the root of the CMake source tree:
#!/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 "$@"
The script's executable bit needs to be set.
The linker output can be customized in the same fashion by also setting a RULE_LAUNCH_LINK script.
这篇关于如何自定义cmake输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!