2011-08-11 31 views
5

मैं वर्तमान में सीएमके के साथ क्यूमेक के साथ बनाई गई एक परियोजना को स्थानांतरित कर रहा हूं।सीएमके + क्यूटी: एमओसी/यूई आउटपुट निर्देशिका को परिभाषित करें

qmake साथ संस्करण में, .pri फ़ाइल में, वहाँ

MOC_DIR = .moc/$${PLATFORM_NAME} 

कि किसी दी गई निर्देशिका में एमओसी अस्थायी फ़ाइलों का उत्पादन करने के सूत्रों का कहना है साफ रखने की अनुमति दी थी। सीएमके के साथ एक ही काम कैसे करें?

नोट: सीएमके के साथ, मैं FindQt4.cmake पैकेज और कमांड QT4_WRAP_CPP() का उपयोग करता हूं।

+5

आम तौर पर, आप अपने स्रोतों को साफ रखने के लिए बाहर के पेड़ के निर्माण का उपयोग करते हैं। देखें http://www.vtk.org/Wiki/CMake_FAQ#Out-of-source_build_trees – baysmith

उत्तर

4

जैसा कि बेस्मिथ कहते हैं, यदि आपका लक्ष्य आपकी स्रोत निर्देशिका को साफ रखना है, तो असली समाधान सीएमके के "out-of-source" सुविधा का उपयोग करना है। यदि आप विंडोज़ पर हैं, तो "नई निर्देशिका में कहां बाइनरी बनाएं" सेट करें, "स्रोत कोड कहां है" निर्देशिका से अलग है। आप यूनिक्स पर हैं, तो यह कुछ इस तरह चला जाता है:

cd <source directory> 
mkdir build 
cd build 
cmake .. 
make 

एक अलग निर्देशिका पर CMake चला कर, निर्माण फ़ाइलों के सभी कि निर्देशिका में जाना जाएगा, और अपने स्रोतों स्वच्छ रहना होगा। (नोट: बिल्ड निर्देशिका को स्रोत निर्देशिका के अंदर नहीं होना चाहिए। अधिक जानकारी के लिए CMake wiki देखें।)

यदि "आउट ऑफ़-सोर्स" आपके लिए काम नहीं करता है, तो मैं एक खोजने में सक्षम था दूसरा विकल्प। मेरे सीएमके 2.8 के साथ स्थापित Qt4Macros.cmake फ़ाइल से जो कुछ मैं बता सकता हूं उसके आधार पर, यह कॉन्फ़िगर पैरामीटर के रूप में सुलभ नहीं है।

SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) 

वैकल्पिक हल अपने एमओसी के सभी उप-फ़ोल्डर के लिए निर्माण करना चाहते हैं निर्दिष्ट करने के लिए निर्देशों में शामिल हैं बदलने के लिए है: यहाँ प्रासंगिक लाइन है।

#include "moc/mainwindow.moc" 

अपने निर्माण निर्देशिका के अंदर moc निर्देशिका बनाने के बाद, वहाँ कोई समस्या नहीं इमारत थे, और मेरे एमओसी फ़ाइल नई निर्देशिका में था।