2

MSVC コンパイラ (Visual c++ Express Edition のコンパイラ) と qt 4.5.2 オープン ソースを使用して、Windows で QtCreator を使用しています。

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

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

前もって感謝します

4

1 に答える 1

1

ヘッダー ファイルは、.pro ファイルの HEADERS 変数にリストされていますか? HEADERS にヘッダー ファイルをリストすることも、MOC 化されたクラスを取得するために必要だと思います。

**[編集]** 気にしないで、Linux の Qt 4.5.2 SDK の Qt Creator 1.2.1 でこれをテストしました。ヘッダー ファイルに「触れる」と、依存する cpps が再コンパイルされます。ヘッダーは HEADER リストにリストされます。

Makefile qmake が生成する、問題の h ファイルを含む私の cpp ファイルには、h ファイルを依存関係として明示的にリストするルールがあります。qmakeがそれをどのように行うのかわかりません。生成されたメイクファイル qmake を調べて、cpp ファイルの 1 つのルールがどのように見えるかを確認することをお勧めします。[/編集]

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

于 2009-08-18T18:53:23.567 に答える