2009-08-18 7 views
2

MSVCコンパイラ(Visual C++ Express Editionのコンパイラ)とQt 4.5.2オープンソースを使用しているウィンドウでQtCreatorを使用しています。MSVC Expressを使用したqmakeのヘッダ依存関係

プロジェクトのヘッダを修正してビルド・オールを押すと、実際には何もビルドされません。私が.cppファイルを変更すると、変更されたcppがコンパイルされます。

これは、複数の.cppファイルで使用されるいくつかのヘッダーファイルを変更する必要があるたびに、完全なプロジェクトを再構築する必要があるためです。この動作を回避する方法がありますか?事前

答えて

1

おかげで、あなたの.PROファイルのヘッダー変数にリストされているヘッダファイルはありますか?私はHEADERSのヘッダファイルを一覧表示することも、MOCでそれらのクラスを取得する必要があると思います。

**私はこれをlinuxのQt 4.5.2 SDKのQt Creator 1.2.1でテストしましたが、ヘッダファイルに触れると、依存するcppsが再コンパイルされますヘッダーがHEADERリストにリストされているかどうかを示します。

メイクファイルqmakeでは、hファイルが含まれているcppファイルにhファイルを依存関係として明示的に指定するルールがあります。 qmakeがそれをどうやって行うかはわかりません。私はあなたのために生成されたmakefile qmakeを調べ、あなたのcppファイルの1つのルールがどのように見えるかを見てみることをお勧めします。 [/編集]

[編集もう一度、今話題を降り]のgccを呼び出すメイクベースのビルドシステムでは通常**、あなたがのためにそれを行うためにはgccを尋ねることによってのCPPによって含まれるヘッダファイルの依存関係情報を生成しますあなたに-Mフラグを付けてください。 cl.exe(マイクロソフトのC++コンパイラ)は、どのようにうまく尋ねるにしても.dファイルを生成しないので、/ showincludesオプションを使用するのがやや一般的です。次に、出力をスクリプトで解析してaに変換します。 dファイルに入れることができます(多くの人がこの手順をスキップし、cl.exeを使用するmakeベースのビルドでは適切な依存関係のチェックをしません)。 しかしqmakeはqmakeがmakefileを生成しているので、qmakeがコンパイラを呼び出すので、qmakeは依存関係の情報を取得するようなことはしません。その時点で依存関係の情報は(少なくとも私が見たmakefileでは)ハードコードされています。 **/

+0

ありがとうございました。 Visual Studio(.proファイルからvcprojを生成)を使用できるかどうかを確認します。 (VSは依存関係を適切に処理しているようです) – Federico

関連する問題