/Yd (デバッグ情報のオブジェクト ファイルへの取り込み)
/Yc オプションおよび /Z7 オプションと共に使用すると、プリコンパイル済みヘッダー (.pch) ファイルから生成されたすべてのオブジェクト ファイルに詳細なデバッグ情報が取り込まれます。 使用は推奨されていません。
/Yd
解説
/Yd は使用されていません。Visual C++ では、1 つの .pdb ファイルに対する複数オブジェクトの書き込みをサポートするようになりました。代わりに /Zi を使用してください。 詳細については、「Deprecated Compiler Options in Visual C++ 2005」を参照してください。
デバッグ情報を含むライブラリを配布する必要がある場合以外は、/Z7 オプションと /Yd オプションではなく /Zi オプションを使用してください。
すべての .obj ファイルに詳細なデバッグ情報を格納する必要があるのは、デバッグ情報を含むライブラリを配布する場合だけです。 デバッグ情報をすべての .obj ファイルに取り込むと、コンパイル速度が低下するうえ、ディスク領域をかなり消費します。 /Yd オプションを指定せずに /Yc オプションと /Z7 オプションを指定すると、.pch ファイルから生成された最初の .obj ファイルだけに共通のデバッグ情報が取り込まれます。 .pch ファイルから生成された以降の .obj ファイルには、デバッグ情報の代わりにデバッグ情報に対するクロス リファレンスが挿入されます。 同一の .pch ファイルから生成された .obj ファイルの数に関係なく、共通デバッグ情報は単一の .obj ファイルにしか保存されません。
このように /Yd オプションを省略すると、ビルド時間を短縮でき、ディスク容量を節約できます。ただし、ごく小さな変更があっても、共通デバッグ情報を取り込んでいる .obj ファイルにはリビルドが必要です。 この場合、その .obj ファイルへのクロス リファレンスを含むすべての .obj ファイルをリビルドする必要があります。 また、1 つの共通 .pch ファイルが複数のプロジェクト間で共有されている場合は、同じ .obj ファイルへのクロス リファレンスが難しくなります。
プリコンパイル済みヘッダーの詳細については、以下のトピックを参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダーをクリックします。
[コマンド ライン] プロパティ ページをクリックします。
[追加のオプション]ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- AdditionalOptions を参照してください。
例
次の #include ステートメントを含む 2 つのベース ファイル F.cpp と G.cpp を想定します。
#include "windows.h"
#include "etc.h"
次のコマンドは、プリコンパイル済みヘッダー ファイル ETC.pch とオブジェクト ファイル F.obj を作成します。
CL /YcETC.H /Z7 F.CPP
オブジェクト ファイル F.obj には、WINDOWS.h と ETC.h (およびこれらのファイルにインクルードされるほかのヘッダー ファイル) の型情報とシンボル情報が挿入されます。 これで、プリコンパイル済みヘッダー ETC.pch を使用して、ソース ファイル G.cpp をコンパイルできます。
CL /YuETC.H /Z7 G.CPP
オブジェクト ファイル G.obj にはプリコンパイル済みヘッダーのデバッグ情報が挿入されず、単に F.obj ファイルでその情報を参照します。 したがって、F.obj とリンクすることが必要です。
プリコンパイル済みヘッダーが /Z7 でコンパイルされていなくても、後で行う /Z7 を指定したコンパイルで、引き続きそのヘッダーを使用できます。 ただし、デバッグ情報は現在のオブジェクト ファイルに取り込まれます。また、デバッガーがプリコンパイル済みヘッダーに定義された関数と型のローカル シンボルを使用できなくなります。