Last Update 2022/12/03
-fdiagnostics-color[=WHEN] オプション
メッセージに色を使用。WHENにより色使用時を指定
WHEN に指定可能な値 : 「never」「always」「auto」
色の値は環境変数GCC_COLORSで定義
WHEN に指定可能な値 : 「never」「always」「auto」
色の値は環境変数GCC_COLORSで定義
テスト概要
-fdiagnostics-colorオプションを使用せずにコンパイル
環境変数GCC_COLORS無しの場合
環境変数GCC_COLORS無しの場合
色(gccデフォルト)を使用したメッセージを出力
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例
-fdiagnostics-color=never を指定してコンパイル
色を使用せずにメッセージを出力
ターミナル(OSX)への出力例及びファイル出力例
ターミナル(OSX)への出力例及びファイル出力例
-fdiagnostics-color=auto を指定してコンパイル
環境変数GCC_COLORS設定済
環境変数GCC_COLORS設定済
色(環境変数GCC_COLORS)を使用したメッセージを出力
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例
ファイル出力に関しては色無し
ターミナル(OSX)への出力例及びファイル出力例
-fdiagnostics-color=always を指定してコンパイル
環境変数GCC_COLORS設定済
環境変数GCC_COLORS設定済
常に色(環境変数GCC_COLORS)を使用したメッセージを出力
ターミナル(OSX)への出力例及びファイル出力例
ターミナル(OSX)への出力例及びファイル出力例
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
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
参考情報[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
-fdiagnostics-colorオプションを使用せずにコンパイル
コンパイル実行
$ gcc main.c
ファイルへの出力
$ gcc main.c 2> sample1_file.txt
$ cat sample1_file.txt
-fdiagnostics-color=never を指定してコンパイル
コンパイル実行
$ gcc -fdiagnostics-color=never main.c
ファイルへの出力
$ gcc -fdiagnostics-color=never main.c 2> sample2_file.txt
$ cat sample2_file.txt
-fdiagnostics-color=auto を指定してコンパイル
環境変数GCC_COLORS設定済の場合
環境変数GCC_COLORS設定済の場合
コンパイル実行
$ gcc -fdiagnostics-color=auto main.c
ファイルへの出力
$ gcc -fdiagnostics-color=auto main.c 2> sample3_file.txt
$ cat sample3_file.txt
-fdiagnostics-color=always を指定してコンパイル
環境変数GCC_COLORS設定済の場合
環境変数GCC_COLORS設定済の場合
コンパイル実行
着色例出力のため -fdiagnostics-parseable-fixits -fdiagnostics-generate-patch を付加
着色例出力のため -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