如何自定义cmake输出 [英] How to customize cmake output

查看:766
本文介绍了如何自定义cmake输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,在编译.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆