インテル® C++ コンパイラーは、次のオプションを使用してコンパイル時間を大幅に短縮するプリコンパイル済みヘッダー (PCH) ファイルをサポートします。
ソースでリストされたヘッダーファイルの構成方法によっては、これらのオプションはコンパイル時間を増大させることもあります。PCH オプションを使用してコンパイル時間を最適化する方法については、「ソースファイルの管理」を参照してください。
-pch オプションは、適切な PCH ファイルを使用するようにコンパイラーに指示します。利用可能な PCH ファイルがない場合、sourcefile.pchi が作成されます。このオプションは、例 1 のように、複数のソースファイルをサポートします。
例 1 のコマンドライン:
icpc -pch source1.cpp source2.cpp
.pchi ファイルが存在しない場合の例 1 の出力:
"source1.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を作成しています。
"source2.cpp": プリコンパイル済みヘッダーファイル "source2.pchi" を作成しています。
.pchi ファイルが存在する場合の例 1 の出力:
"source1.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を使用しています。
"source2.cpp": プリコンパイル済みヘッダーファイル "source2.pchi" を使用しています。
ヘッダーファイルが同じ場合、-pch オプションは他のソースから作成された PCH ファイルを使用します。例えば、-pch を使用して source1.cpp をコンパイルすると、source1.pchi が作成されます。その後、-pch を使用して source2.cpp をコンパイルすると、コンパイラーは同じヘッダーを検出した場合 source1.pchi を使用します。
コンパイラーが PCH ファイル (filename) を作成するようにするには、-pch-create filename オプションを使用します。このオプションを使用するときは次の点に注意してください。
filename パラメーターは必ず指定する必要があります。
filename パラメーターはフルパス名で指定できます。
filename へのフルパスは存在していなければなりません。
filename には拡張子 .pch が自動的に追加されます。
このオプションは、-pch-use filename と一緒に使用することはできません。
-pch-create filename オプションは、単一ソースファイルのコンパイルのみをサポートします。
例 2 のコマンドライン:
icpc -pch-create /pch/source32.pchi source.cpp
例 2 の出力:
"source.cpp": プリコンパイル済みヘッダーファイル "/pch/source32.pchi" を作成しています。
このオプションは、filename で指定された PCH ファイルを使用するようにコンパイラーに指示します。このオプションは、-pch-create filename と同時に使用することはできません。-pch-use filename オプションはフルパス名をサポートします。すべてのソースファイルが同じ .pchi ファイルを使用している場合は複数のソースファイルをサポートします。
例 3 のコマンドライン:
icpc -pch-use /pch/source32.pchi source.cpp
例 3 の出力:
"source.cpp": プリコンパイル済みヘッダーファイル /pch/source32.pchi を使用しています。
PCH ファイルへのパス (dirname) を指定するには、-pch-dir dirname オプションを使用します。このオプションは、-pch、-pch-create filename、および -pch-use filename オプションとともに使用することができます。
例 4 のコマンドライン:
icpc -pch -pch-dir /pch/source32.cpp
例 4 の出力:
"source32.cpp": プリコンパイル済みヘッダーファイル /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": プリコンパイル済みヘッダーファイル "source1.pchi" を作成しています。
"source2.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を使用しています。
"source3.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を使用しています。
#pragma hdrstop を使用しないと、common.h の後に異なるヘッダーが記述されている場合、ソースファイルごとに異なる PCH ファイルが作成され、コンパイル時間が長くなります。#pragma hdrstop は、これらの PCH オプションを使用しないコンパイルには影響しません。