2012-12-04 31 views
5

My IDE:Visual Studio 2010、VS、Qt verにQtアドインを使用します。 4.8.1Qtプロジェクトでプリコンパイル済みヘッダーを使用する方法

私のQtのプロジェクトでは、プリコンパイルヘッダ(PCH)を作成するために、 をしようとしているときに、私は問題に直面している

非QtのプロジェクトでPCHを作成するための私のusuallアプローチがある:
1.ヘッダを作成します。
2.ヘッダーにプリコンパイルされるファイルをインクルードします。
3.プロジェクトの状態にあるすべてのソースファイルについて、pchを使用する場合はそのプロパティになります。
4. pchのプロジェクト状態作成で1つのソースファイルに対して、 5.すべてのソースファイルにpchを含めます。

これらのアクションは失敗しました。Qtプロジェクトのためにが失敗しました.PCHに起因することが、MOCによって生成されたすべてのファイルに含める必要があると判断しました。

QtAssistantでプリコンパイル済みヘッダーの記事を読んで、以下を実行しました:
1.ヘッダーファイルを作成しました。プロジェクトセットオプション使用PCH内のすべての.cppファイルの場合と1のため
2.私はqmakeのは、私はそれがここでは、生成された.PROファイルを修正
5.を-project走っ生成されたプロジェクト
4をqmakeのに変換
3を作成次のとおりです。

TEMPLATE = app 
TARGET = 
DEPENDPATH += . GeneratedFiles 
INCLUDEPATH += . 
PRECOMPILED_HEADER = StdAfx.h 
QT += network 

# Input 
HEADERS += server.h StdAfx.h 
FORMS += server.ui 
SOURCES += main.cpp server.cpp StdAfx.h.cpp 
RESOURCES += server.qrc 
  1. 私はqmakeの
  2. オープン.PROファイルを実行し、それを構築しようとしたエラーを得た:

    エラー2エラーC1083:「STDAFX.H」:オープンしていないが、ファイル含めることはできませんそのようなファイルやディレクトリを私が間違っているのは何

+0

StdAfxを作成しましたか?hファイル内に、プリコンパイルしたいすべてのヘッダが含まれていますか? – drescherjm

+0

はい、もちろんです!私は、.hファイルを作成したと述べましたが、それはStdAfx.hであると述べました。 –

答えて

3

解決策が見つかりました。プロジェクトでプリコンパイル済みヘッダーを使用するために行われるために必要な
唯一のものは、にある.PROファイルに 次のステートメントが含ま:.PRO変更後

CONFIG += nameOfPrecompiledHeader.h 
PRECOMPILED_HEADER = nameOfPrecompiledHeader.h 
win32-msvc* { 
PRECOMPILED_SOURCE = nameOfFileInWhichCreateOptionWillBeSet.cpp /* other .cpp files will be with use option*/ 
} 

をし、qmakeは、すべての.cppファイルを実行しますpchの使用のために設定し、その作成(nameOfFileInWhichCreateOptionWillBeSet)と.pchが生成されます。

+0

さらに読む:http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html – Ich

+1

私はこのアドバイスに従って[問題を引き起こす可能性がある]という警告をここに追加してください(https://bugreports.qt.io/browse/QTBUG-44071)。私が考える重要なポイントは、QMakeがVisual Studio用のコンパイル済みのソースファイルを自動的に生成するため、バニラVSを使用する場合と同じように自分で作成する必要はないということです。 – sjdowling

+0

これはQt 5.5.0(OSX)では動作しません。 @Gordon FreemanのようにCONFIG + = precompile_headerを使用すると、動作するようになります。 – Borzh

13

プリコンパイルされたヘッダーファイルを作成し、目的のヘッダーを含めます。

pch.hpp:

// precompiled headers 

// add C includes here 

#ifdef __cplusplus 
// add C++ includes here 

#include <iostream> 
#include <QtGui> 

#endif // __cplusplus 

は、その後、あなたの.PROファイルに:

CONFIG += precompile_header 
PRECOMPILED_HEADER = pch.hpp 
HEADERS += pch.hpp 

qmakeのは今自動的にコンパイラに正しいオプションを設定します。

+0

あなたの回答には、私の質問または私の答えでカバーされていない新しい情報が含まれていますか?あなたの答えの目的は何ですか?あなたは誰に対処していますか? –

+5

@spin_eightあなた自身の答えは、プリコンパイルされたヘッダーを.proファイルに追加するための構文が間違っています。 'CONFIG'オプションはヘッダーファイル自体の名前ではなく' precompile_header'でなければなりません。また、 'PRECOMPILED_SOURCE'オプションはどこにも書かれていません。私の答えは、文書が行く限り正しいです(それはいつもうまく働いています)。 –

+6

@spin_eightあなたは間違っています。自分自身を繰り返すのではなく、ちょうど私が示したことを行う[関連ドキュメント](http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html)にリンクします。 –

関連する問題