プリコンパイル済みヘッダーファイルの作成

インテル(R) C++ コンパイラーは、次のオプションを使用してコンパイル時間を大幅に短縮するプリコンパイル済みヘッダー (PCH) ファイルをサポートします。

警告

ソースでリストされたヘッダーファイルの構成方法によっては、これらのオプションはコンパイル時間を増大させることもあります。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 を使用します。

-create_pch の使用

コンパイラーが PCH ファイル (filename) を作成するようにするには、-create_pch filename オプションを使用します。このオプションを使用するときは次の点に注意してください。

例 2 のコマンドライン
icpc -create_pch /pch/source32.pchi source.cpp

例 2 の出力
"source.cpp": creating precompiled header file "/pch/source32.pchi"

-use_pch filename の使用

このオプションは、filename で指定された PCH ファイルを使用するようにコンパイラーに指示します。このオプションは -create_pch filename と同時に使用することはできません。-use_pch filename オプションはフルパス名をサポートします。すべてのソースファイルが同じ .pchi ファイルを使用している場合は複数のソースファイルをサポートします。

例 3 のコマンドライン
icpc -use_pch /pch/source32.pchi source.cpp

例 3 の出力
"source.cpp": using precompiled header file /pch/source32.pchi

-pch_dir dirname の使用

PCH ファイルへのパス (dirname) を指定するには、-pch_dir dirname オプションを使用します。このオプションは、-pch-create_pch filename、および -use_pch filename オプションとともに使用することができます。

例 4 のコマンドライン
icpc -pch -pch_dir /pch source32.cpp

例 4 の出力
"source32.cpp": creating precompiled header file /pch/source32.pchi

ソースファイルの管理

ソースファイルの多くが共通のヘッダーファイルをインクルードしている場合、共通のヘッダーファイルを最初に、続けて #pragma hdrstop 宣言子を記述します。このプラグマはコンパイラーに PCH ファイルの生成を停止するように指示します。例えば、source1.cppsource2.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 オプションを使用しないコンパイルには影響しません。

関連情報