gccfilter
RULE_LAUNCH_COMPILEプロパティを、必要なオプションで呼び出すラッパースクリプトにポイントすることで、CMakeを使用できgccfilter
ます。
gccfilter_wrap
次の内容で、最も外側のCMakeプロジェクトディレクトリに名前が付けられた実行可能シェルスクリプトを作成します。
#!/bin/sh
exec gccfilter -a -c "$@"
必ずファイルの実行可能ビットを設定してください。次に、で、ターゲットを追加する前にディレクトリプロパティCMakeLists.txt
を設定します。RULE_LAUNCH_COMPILE
project (HelloWorld)
set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE
"${PROJECT_SOURCE_DIR}/gccfilter_wrap")
add_executable(HelloWorld HelloWorld.cpp)
生成されたmakefileルールは、各コンパイラ呼び出しの前にgccfilter_wrap
スクリプトを付加します。または、RULE_LAUNCH_COMPILE
プロパティをターゲットプロパティまたはグローバルプロパティとして設定することもできます。
このRULE_LAUNCH_COMPILE
プロパティは、MakefileベースのCMakeジェネレーターでのみ機能します。
Thiloによる編集
これが私が最終的に問題を解決した方法です-基本的にこの解決策の言い換えられたバージョン:
# GCCFilter, if appliciable
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCPP)
option(COLOR_GCC "Use GCCFilter to color compiler output messages" ON)
set(COLOR_GCC_OPTIONS "-c -r -w" CACHE STRING "Arguments that are passed to gccfilter when output coloring is switchend on. Defaults to -c -r -w.")
if(COLOR_GCC)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${PROJECT_SOURCE_DIR}/cmake/gccfilter ${COLOR_GCC_OPTIONS}")
endif()
endif()