Loose-Info.com
Last Update 2021/03/08
TOP - 各種テスト - gcc - -fdiagnostics-color[=WHEN] オプション

-fdiagnostics-color[=WHEN] オプション
メッセージに色を使用。WHENにより色使用時を指定
WHEN に指定可能な値 : 「never」「always」「auto」
色の値は環境変数GCC_COLORSで定義

テスト概要

その1
-fdiagnostics-colorオプションを使用せずにコンパイル
環境変数GCC_COLORS無しの場合
色(gccデフォルト)を使用したメッセージを出力
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例

その2
-fdiagnostics-color=never を指定してコンパイル
色を使用せずにメッセージを出力
ターミナル(OSX)への出力例及びファイル出力例

その3
-fdiagnostics-color=auto を指定してコンパイル
環境変数GCC_COLORS設定済
色(環境変数GCC_COLORS)を使用したメッセージを出力
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例

その4
-fdiagnostics-color=always を指定してコンパイル
環境変数GCC_COLORS設定済
常に色(環境変数GCC_COLORS)を使用したメッセージを出力
ターミナル(OSX)への出力例及びファイル出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル

main.c
/* -fdiagnostics-color[=WHEN] オプション動作確認用ソースファイル */ #include <stdio.h> int main(void) { int i; /* 下記コードでエラーメッセージ発生 */ int i; printf(""i); prinnntf("Error!!!\n") return 0; }

環境変数

GCC_COLORS 設定値
参考情報[1] : 設定値の詳細詳細情報 - Using the GNU Compiler Collection - Options to Control Diagnostic Messages Formatting
参考情報[2] : CONSOLE_CODES (SGRに関する詳細) - JM Project
error=01;31:warning=01;32:note=01;33:range1=01;34:range2=01;35:\ locus=01;36:quote=01;04;31:fixit-insert=01;04;32:fixit-delete=01;04;33:\ diff-filename=01;04;34:diff-hunk=01;04;35:diff-delete=01;04;36:\ diff-insert=01;30;42:type-diff=01;30;44

設定内容

error= bold + red sample warning= bold + green sample note= bold + brown sample range1= bold + blue sample range2= bold + magenta sample locus= bold + cyan sample quote= bold + underscore + red sample fixit-insert= bold + underscore + green sample fixit-delete= bold + underscore + brown sample diff-filename= bold + underscore + blue sample diff-hunk= bold + underscore + magenta sample diff-delete= bold + underscore + cyan sample diff-insert= bold + black + green background sample type-diff= bold + black + blue background sample

環境変数の設定
$ export GCC_COLORS=error=01\;31:warning=01\;32:note=01\;33:range1=01\;34:range2=01\;35:\ > locus=01\;36:quote=01\;04\;31:fixit-insert=01\;04\;32:fixit-delete=01\;04\;33:\ > diff-filename=01\;04\;34:diff-hunk=01\;04\;35:diff-delete=01\;04\;36:\ > diff-insert=01\;30\;42:type-diff=01\;30\;44

その1

-fdiagnostics-colorオプションを使用せずにコンパイル

コンパイル実行
$ gcc main.c

ファイルへの出力
$ gcc main.c 2> sample1_file.txt $ cat sample1_file.txt

その2

-fdiagnostics-color=never を指定してコンパイル

コンパイル実行
$ gcc -fdiagnostics-color=never main.c

ファイルへの出力
$ gcc -fdiagnostics-color=never main.c 2> sample2_file.txt $ cat sample2_file.txt

その3

-fdiagnostics-color=never を指定してコンパイル
環境変数GCC_COLORS設定済の場合

コンパイル実行
$ gcc -fdiagnostics-color=auto main.c

ファイルへの出力
$ gcc -fdiagnostics-color=auto main.c 2> sample3_file.txt $ cat sample3_file.txt

その4

-fdiagnostics-color=never を指定してコンパイル
環境変数GCC_COLORS設定済の場合

コンパイル実行
着色例出力のため -fdiagnostics-parseable-fixits -fdiagnostics-generate-patch を付加
$ gcc -fdiagnostics-color=always -fdiagnostics-parseable-fixits -fdiagnostics-generate-patch main.c

ファイルへの出力
$ gcc -fdiagnostics-color=always -fdiagnostics-parseable-fixits -fdiagnostics-generate-patch main.c 2> sample4_file.txt $ cat sample4_file.txt