2012-12-04 22 views
5

में प्रीकंपील्ड हेडर का उपयोग कैसे करें मेरा आईडीई: विजुअल स्टूडियो 2010, मैं वीएस, क्यूटी वर्क के लिए क्यूटी एड-इन का उपयोग करता हूं। 4.8.1क्यूटी परियोजना

मैं अपने क्यूटी परियोजना में precompiled शीर्ष लेख (PCH) बनाने के लिए का प्रयास करते हुए समस्या के साथ सामना किया है।

गैर क्यूटी परियोजना में PCH बनाने के लिए मेरे usuall दृष्टिकोण है:
1. हैडर बनाएं;
2. उन फ़ाइलों को शामिल करें जो शीर्षलेख में प्रीकंपल किए जाएंगे;
3. प्रोजेक्ट स्थिति में प्रत्येक स्रोत फ़ाइल के लिए इसके गुणों में यदि यह पीएच का उपयोग करेगा;
4. परियोजना राज्य में एक स्रोत फ़ाइल के लिए पीएच के निर्माण; 5. सभी स्रोत फ़ाइलों में पीएच शामिल करें।

क्यूटी परियोजना के लिए उन कार्रवाइयों में विफल रहा, मैंने तय किया कि पीओसी के कारण यह क्या होता है कि एमओसी द्वारा उत्पन्न सभी फाइलों में शामिल किया जाना चाहिए।

मैंने प्रीकंपिल्ड हेडर पर QtAssistant में आलेख पढ़ा और निम्न किया:
1. हेडर फ़ाइल बनाई गई;
2. परियोजना सेट विकल्प उपयोग PCH में सभी सीपीपी फ़ाइलों के लिए और एक के लिए बनाने के
3. उत्पन्न परियोजना यह qmake को
4. मैं qmake -Project
5. मैं उत्पन्न संशोधित .pro फ़ाइल भाग गया, यहां परिवर्तित है:

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 बनाया था।एच फ़ाइल और इसके अंदर सभी हेडर शामिल हैं जिन्हें आप प्रीकंपल करना चाहते हैं? – drescherjm

+0

हां बिल्कुल! मैं उल्लेख किया है कि मैं ज फ़ाइल बनाया है, लेकिन didn 't ने कहा कि यह Stdafx.h –

उत्तर

3

मुझे समाधान मिला।
केवल जरूरत बात क्रम परियोजना में precompiled शीर्ष लेख का उपयोग करने के लिए किया जाना है .pro फ़ाइल में निम्नलिखित बयानों शामिल करने के लिए:

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

.pro संशोधन के बाद और qmake सभी सीपीपी फ़ाइलों चल रहा होगा पीएच के उपयोग के लिए स्थापित किया जाना चाहिए और इसके निर्माण के लिए एक (नाम OfFileInWhichCreateOptionWillBeSet) और .pch उत्पन्न किया जाएगा

+0

आगे पढ़ना है: http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html – Ich

+1

मैं चाहूँगा यहां एक चेतावनी जोड़ने के लिए कि इस सलाह के बाद [समस्याओं का कारण बन सकता है] (https://bugreports.qt.io/browse/QTBUG-44071)। मुख्य बिंदु मुझे लगता है कि QMake आपके लिए विजुअल स्टूडियो के लिए स्वचालित रूप से आपके पूर्व-संकलित स्रोत फ़ाइल जेनरेट करेगा और इसलिए आपको स्वयं को बनाने की आवश्यकता नहीं है क्योंकि आप वेनिला वीएस का उपयोग करेंगे। – sjdowling

+0

यह क्यूटी 5.5.0 (ओएसएक्स) पर काम नहीं कर रहा है। CONGIG + = precompile_header का उपयोग @Gordon Freeman के रूप में इंगित करता है यह काम करता है। – 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 फ़ाइल में precompiled शीर्षलेख जोड़ने के लिए गलत वाक्यविन्यास देता है। 'CONFIG' विकल्प' precompile_header' होना चाहिए शीर्षलेख फ़ाइल का नाम नहीं। इसके अलावा 'PRECOMPILED_SOURCE' विकल्प कहीं भी दस्तावेज नहीं है। मेरा जवाब सही है जहां तक ​​दस्तावेज़ जाते हैं (और यह हमेशा मेरे लिए ठीक काम करता है)। –

+6

@spin_eight आप गलत हैं। खुद को दोहराने के बजाय मैं आपको केवल [प्रासंगिक दस्तावेज़ीकरण] (http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html) से लिंक करूँगा जो मैंने दिखाया है। –