インテル(R) C++ コンパイラーは、次のオプションを使用してコンパイル時間を大幅に短縮するプリコンパイル済みヘッダー (PCH) ファイルをサポートします。
ソースでリストされたヘッダーファイルの構成方法によっては、これらのオプションはコンパイル時間を増大させることもあります。PCH オプションを使用してコンパイル時間を最適化する方法については、「ソースファイルの管理」を参照してください。
-pch オプションは、適切な PCH ファイルを使用するようにコンパイラーに指示します。利用可能な PCH ファイルがない場合、sourcefile.pchi として作成されます。このオプションは、例 1 のように、複数のソースファイルをサポートします。
例 1 のコマンドライン
icpc -pch source1.cpp source2.cpp
.pchi ファイルが存在しない場合の例 1 の出力
"source1.cpp": creating precompiled header file "source1.pchi"
"source2.cpp": creating precompiled header file "source2.pchi"
.pchi ファイルが存在する場合の例 1 の出力
"source1.cpp": using precompiled header file "source1.pchi"
"source2.cpp": using precompiled header file "source2.pchi"
ヘッダーファイルが同じ場合、-pch オプションは他のソースから作成された PCH ファイルを使用します。例えば、-pch を使用して source1.cpp をコンパイルすると、source1.pchi が作成されます。その後、-pch を使用して source2.cpp をコンパイルすると、コンパイラーは同じヘッダーを検出した場合 source1.pchi を使用します。
コンパイラーが PCH ファイル (filename) を作成するようにするには、-pch-create filename オプションを使用します。このオプションを使用するときは次の点に注意してください。
例 2 のコマンドライン
icpc -pch-create /pch/source32.pchi source.cpp
例 2 の出力
"source.cpp": creating precompiled header file "/pch/source32.pchi"
このオプションは、filename で指定された PCH ファイルを使用するようにコンパイラーに指示します。このオプションは、-pch-create filename と同時に使用することはできません。-pch-use filename オプションはフルパス名をサポートします。すべてのソースファイルが同じ .pchi ファイルを使用している場合は複数のソースファイルをサポートします。
例 3 のコマンドライン
icpc -pch-use /pch/source32.pchi source.cpp
例 3 の出力
"source.cpp": using precompiled header file /pch/source32.pchi
PCH ファイルへのパス (dirname) を指定するには、-pch-dir dirname オプションを使用します。このオプションは、-pc、-pch-create filename、および -pch-use filename オプションとともに使用することができます。
例 4 のコマンドライン
icpc -pch -pch-dir /pch/source32.cpp
例 4 の出力
"source32.cpp": creating precompiled header file /pch/source32.pchi
ソースファイルの多くが共通のヘッダーファイルをインクルードしている場合、共通のヘッダーファイルを最初に、続けて #pragma hdrstop 宣言子を記述します。このプラグマはコンパイラーに PCH ファイルの生成を停止するように指示します。例えば、source1.cpp、source2.cpp、および source3.cpp がすべて common.h をインクルードしている場合、common.h の後に #pragma hdrstop を記述してコンパイル時間を最適化します。
#include "common.h"
#pragma hdrstop
#include "noncommon.h"
-pch オプションを使用してコンパイルした場合
icpc -pch source1.cpp source2.cpp source3.cpp
コンパイラーは 3 つのソースファイルについて 1 つの PCH ファイルを生成します。
"source1.cpp": creating precompiled header file "source1.pchi"
"source2.cpp": using precompiled header file "source1.pchi"
"source3.cpp": using precompiled header file "source1.pchi"
#pragma hdrstop を使用しないと、common.h に続いて異なるヘッダーが記述されている場合、ソースファイルごとに異なる PCH ファイルが作成され、コンパイル時間は長くなります。#pragma hdrstop は、これらの PCH オプションを使用しないコンパイルには影響しません。