2017-08-18 10 views
19

हम सीएमके, क्यूटी और विजुअल स्टूडियो का उपयोग कर रहे हैं। हमारी कई परियोजनाओं को AUTOMOC ON से add_library पास करने के माध्यम से, ऑटोोक चलाने के लिए कॉन्फ़िगर किया गया है।सीएमके 3.9 अब विजुअल स्टूडियो में "ऑटोोजेन" परियोजनाएं बनाता है?

हमने हाल ही में सीएमके 3.9.1 में अपडेट किया है, और विजुअल स्टूडियो अब प्रत्येक automoc'd लाइब्रेरी के लिए एक अतिरिक्त प्रोजेक्ट दिखाता है। उदाहरण के लिए, अब हमारे पास हमारे समाधान में "कोर" प्रोजेक्ट और "कोर_ओटोजेन" प्रोजेक्ट है।

(यह दोनों VS2015 और VS2017, और दोनों क्यूटी 5.8 और 5.9.1 में होता है)

यह कुछ कष्टप्रद परिणाम है:

  • लगभग दोगुना परियोजनाओं की संख्या, का एक बहुत जोड़ने दृश्य अव्यवस्था।
  • यूआई के माध्यम से एक व्यक्तिगत परियोजना के निर्माण के दौरान ऑटोमोक अब नहीं चलता है, जो विशिष्ट परियोजना के लिए मुद्दों को डिबग करने पर सूक्ष्म बग का कारण बन सकता है।

क्या किसी को पता है कि ऑटोजन के लिए पिछले सीएमके व्यवहार को पुनर्स्थापित करने का कोई तरीका है या नहीं?

या इसे छोड़कर, कम से कम ऑटोोजेन परियोजनाओं के दृश्य अव्यवस्था को कम करने का कोई तरीका?

+0

शायद 'set_property (वैश्विक संपत्ति USE_FOLDERS चालू)' मदद करेगा? –

+0

सीएमके गिटलैब में [अंक 17205] (https://gitlab.kitware.com/cmake/cmake/issues/17205) देखें। यह इस समस्या के '_autogen' भाग और एक मर्ज अनुरोध के लिंक की रिपोर्ट करता है, जिसे इसे संबोधित करने की उम्मीद है (वर्तमान में 3.10.0 रिलीज़ पर लक्षित)। –

उत्तर

9

सीएमके v3.9 दस्तावेज़ीकरण के अनुसार, आप उत्पन्न फ़ाइलों को किसी भिन्न फ़ोल्डर में स्थानांतरित करने के लिए AUTOGEN_BUILD_DIR का उपयोग कर सकते हैं।

डिफ़ॉल्ट रूप से CMake का उपयोग करता <dir>/<target-name>_autogen जहां:

<dir>CMAKE_CURRENT_BINARY_DIR है और <target-name>NAME

है या AUTOMOC संपत्ति से आप इस्तेमाल कर सकते हैं:

वैश्विक संपत्ति AUTOGEN_TARGETS_FOLDER कर सकते हैं समूह के लिए इस्तेमाल किया जाना चाहिए एक आईडीई में automoc लक्ष्य एक साथ, उदा। एमएसवीएस में

वैश्विक संपत्ति AUTOGEN_SOURCE_GROUP का उपयोग AUTOMOC द्वारा जेनरेट की गई फ़ाइलों को समूह आईडी में एक साथ करने के लिए किया जा सकता है, उदा। एमएसवीएस में

उम्मीद है कि इससे मदद मिलती है।

+1

सुझावों के लिए धन्यवाद, लेकिन यह काफी मदद नहीं करता है। AUTOGEN_TARGETS_FOLDER उस स्थान को सेट करता है जहां जेनरेट की गई फ़ाइलें (जैसे। Mocs_compilation.cpp) संग्रहीत होती हैं। सीएमके अभी भी "_autogen" परियोजनाओं को बना देता है। 3.9 से पहले, सीएमके ने प्रोजेक्ट के प्रीबिल्ड चरण के हिस्से के रूप में मॉक चलाया। अब यह हर automoc'd परियोजना के लिए एक अतिरिक्त परियोजना बनाने लगता है। –

6

यह एक फ़ोल्डर में सभी autogen परियोजनाओं एकत्र करता है:

set_property(GLOBAL PROPERTY USE_FOLDERS ON) 
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc) 

enter image description here

संबंधित मुद्दे