トップ回答者
Precompiled code(.pch)の利用方法について

質問
-
あるSolutionに3つのProject(A,B,C すべてDLL)があります。
各ProjectではそれぞれPrecompiled codeを生成し、利用しています。
各ProjectのBuild順と依存関係は以下のとおりです。
A -> B -> C
また、各Projectは依存するProjectのHeader FileをPrecompile headerにincludeして、Precompiled codeを生成しています。この時、Project BはProject Aの生成済みのPrecompiled codeをincludeしてProject BのPrecompiled codeを生成し、Project Bで利用する方法はありますでしょうか?
Project Cでも同様にProject Bの生成済みのPrecompiled codeをincludeしてProject CのPrecompiled codeを生成し、Project Cで利用する方法はありますでしょうか?Precompile codeのRuleとして、/Dやdefineが同じであることなど、Headerの解釈の仕方が変わらないことが前提となっています。
回答
-
pchには、コンパイル時に随所で指定している $(IntDir) の展開情報などがフルパスでセットされています(相対ではない)。そのため、プロジェクトのフォルダ構成が同じ(ありえないわけですが...)じゃない限り、一致させることはできないと思います(fc /b とかで比較するとすぐわかります)。
もしかしたら設定をうまくやれば、同じ内容にできるかもしれませんが、私はその方法を知りません。pdbをフルパスにしないのと同様できるとは思うんですが。。。
で、pchファイルの出力結果を同じにできる場合ですが、プリコンパイルヘッダーを利用の部分でpchのパスを指定できるのでそこを書き換えてやれば行けると思います。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/- 回答としてマーク kozz 2011年3月23日 8:30
すべての返信
-
pchには、コンパイル時に随所で指定している $(IntDir) の展開情報などがフルパスでセットされています(相対ではない)。そのため、プロジェクトのフォルダ構成が同じ(ありえないわけですが...)じゃない限り、一致させることはできないと思います(fc /b とかで比較するとすぐわかります)。
もしかしたら設定をうまくやれば、同じ内容にできるかもしれませんが、私はその方法を知りません。pdbをフルパスにしないのと同様できるとは思うんですが。。。
で、pchファイルの出力結果を同じにできる場合ですが、プリコンパイルヘッダーを利用の部分でpchのパスを指定できるのでそこを書き換えてやれば行けると思います。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/- 回答としてマーク kozz 2011年3月23日 8:30