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

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

Caution icon警告

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

Note icon

ヘッダーファイルが同じ場合、-pch オプションは他のソースから作成された PCH ファイルを使用します。例えば、-pch を使用して source1.cpp をコンパイルすると、source1.pchi が作成されます。その後、-pch を使用して source2.cpp をコンパイルすると、コンパイラーは同じヘッダーを検出した場合 source1.pchi を使用します。

-pch-create の使用

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

例 2 のコマンドライン:

icpc -pch-create /pch/source32.pchi source.cpp

例 2 の出力:

"source.cpp": プリコンパイル済みヘッダーファイル "/pch/source32.pchi" を作成しています。

-pch-use filename の使用

このオプションは、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-dir dirname の使用

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.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": プリコンパイル済みヘッダーファイル "source1.pchi" を作成しています。
"source2.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を使用しています。
"source3.cpp": プリコンパイル済みヘッダーファイル "source1.pchi" を使用しています。

#pragma hdrstop を使用しないと、common.h の後に異なるヘッダーが記述されている場合、ソースファイルごとに異なる PCH ファイルが作成され、コンパイル時間が長くなります。#pragma hdrstop は、これらの PCH オプションを使用しないコンパイルには影響しません。

関連情報