2012-12-04 17 views
5

Benim IDE: Visual Studio 2010, VS, Qt ver için Qt eklenti kullanıyorum. Benim Qt projesinde derlenmiş başlığı (PCH) oluşturmak için çalışırken 4.8.1Qt projesinde önceden derlenmiş başlıklar nasıl kullanılır?

Ben sorunu ile karşılaşmıştır.

olmayan Qt projesinde pch oluşturmak için My usuall yaklaşımdır:
1. başlık oluşturun;
2. Başlıkta önceden derlenecek dosyaları dahil edin;
3. Proje kaynağındaki her kaynak dosya için pch;
4. Proje durumundaki bir kaynak dosya için pch; 5. Tüm kaynak dosyalarına pch ekleyin.

olarak bu eylem o MOC tarafından oluşturulan tüm dosyalara dahil edilmelidir pch nedeniyle ne karar Qt projesi için başarısız oldu.

QtAssistant makalesini önceden derlenmiş üstbilgilerde okuyacağım ve aşağıdakileri yaptım:
1. Üstbilgi dosyası oluşturuldu; Proje set opsiyon kullanım pch tüm .cpp dosyaları için
2. ve biri için
3. burada, ben qmake -proje
5. oluşturulan değiştirilmiş .pro dosyayı çalıştırdığınızda oluşturulan projeyi bunu
4. QMake Çevrildi oluşturmak geçerli:

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. Ben qmake
  2. açık .pro dosyayı koştu ve onu inşa etmek için çalıştı ve hata var:

    Hata 2 hata C1083: 'StdAfx.h': açık dosya dahil Can Böyle bir dosya veya dizini yanlış yapıyorum

?

+0

StdAfx oluşturdunuz mu?h dosya ve bunun içinde önceden derlenmesini istediğiniz tüm başlıkları içerir? – drescherjm

+0

Evet tabiki! .h dosyası oluşturduğumu, ancak bunun StdAfx.h –

cevap

3

Çözüm buldum. .pro dosyasında aşağıdaki ifadeleri içerecek şekilde
gerekli tek şey projesinde derlenmiş başlığı kullanmak için yapılması gereken şudur:

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

.pro değiştirildikten sonra ve qmake tüm .cpp dosyaları çalıştıran olacak pch ve onun oluşturulması için (nameOfFileInWhichCreateOptionWillBeSet) ve .pch kullanımı için oluşturulmalıdır.

+0

olduğunu belirtmedim. Okuma: http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html – Ich

+1

Bu tavsiyeyi izleyerek [sorunlara yol açabilir] (https://bugreports.qt.io/browse/QTBUG-44071) burada bir uyarı eklemek için. Bence QMake, Visual Studio için sizin için önceden derlenmiş kaynak dosyanızı otomatik olarak oluşturacak ve böylece vanilya VS'yi kullandığınız gibi kendiniz yaratmak zorunda kalmayacaksınız. – sjdowling

+0

Bu, Qt 5.5.0 (OSX) üzerinde çalışmıyor. CONFIG + = kullanarak precompile_header @Gordon Freeman gösterir çalışmasını yapar. – Borzh

13

Önceden derlenmiş başlık dosyanızı oluşturun ve istenen üstbilgileri ekleyin.

pch.hpp:

// precompiled headers 

// add C includes here 

#ifdef __cplusplus 
// add C++ includes here 

#include <iostream> 
#include <QtGui> 

#endif // __cplusplus 

Sonra .pro dosyasında:

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

QMake artık otomatik derleyici için doğru seçenekleri ayarlar.

+0

Cevabınız, sorumu veya yanıtım kapsamında olmayan yeni bilgiler içeriyor mu? Cevabınızın amacı nedir? Kime hitap ediyorsun? –

+5

@spin_eight Kendi yanıtınız, önceden derlenmiş üstbilgiyi .pro dosyasına eklemek için yanlış sözdizimi verir. 'CONFIG' seçeneği 'precompile_header' başlık dosyasının kendisi değil. Ayrıca "PRECOMPILED_SOURCE" seçeneği herhangi bir yerde belgelenmez. Cevabım, dokümanlar gittikçe doğrudur (ve her zaman benim için iyi çalıştı). –

+6

@spin_eight Hatalısınız. Kendimi tekrarlamak yerine, tam olarak size gösterdiğim şeyi yapan [ilgili belgelere] (http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html) bağlanacağım. –

İlgili konular