4

たとえば、.c ファイルをコンパイルするときに、cmake で印刷するだけにしたい

CC    xxx.c

Linux kbuild のように stdout に。

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_COMPILEcustom_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 に答える