2011-08-17 12 views
7

मुझे समाधान के भीतर मेरे कोड के संगठन के संबंध में सीएमके के साथ कुछ समस्या है। मेरे पास प्रत्येक के लिए निर्देशिका बनाकर मेरे नामस्थान को व्यवस्थित करने की आदत है।सीएमके का उपयोग करके मेरी फाइलें व्यवस्थित कैसे करें?

namespace test { namespace blabla { ... } } 

मैं एक निर्देशिका परीक्षण बनाना होगा और इसके अंदर एक निर्देशिका blabla, तथापि CMake उन्हें अपने दृश्य स्टूडियो या Xcode प्रोजेक्ट में प्रदर्शित नहीं कर सकता: उदाहरण के लिए अगर मैं कुछ इस तरह बना सकते हैं।

क्या यह करने के लिए कोई चाल है?

+0

आप अपनी परियोजना में क्या दिखना चाहते हैं? फ़ाइलें? फ़ोल्डर्स? – Philipp

+0

फ़ोल्डर और उनके भीतर फाइलें। – lollancf37

+0

और (आपने) उन्हें जोड़ने का प्रयास कैसे किया? – Philipp

उत्तर

11

source_group कमांड का उपयोग करने का प्रयास करें। add_executable करने के लिए कॉल करने के बाद दृश्य स्टूडियो के लिए उदाहरण, अपनी परियोजना की संरचना करने के source_group बयान जोड़ने के रूप में आप चाहते हैं, .:

source_group("test\\blabla" FILES file1.cpp file2.cpp) 
+0

ऐसा लगता है कि यह चाल है! धन्यवाद। हालांकि मुझे बस "blabla" फ़ोल्डर मिलता है और उस पर ब्लैब्ला के साथ फ़ोल्डर "परीक्षण" नहीं मिलता है। कोई उपाय ? – lollancf37

+0

नेस्टेड स्रोत समूह (बैकस्लाश का उपयोग करके) मेरे लिए सीएमके 2.8.5 और विजुअल स्टूडियो 2008 प्रो के साथ काम करते हैं। – sakra

+0

मैंने अभी तक बनाम एक्सकोड पर परीक्षण नहीं किया था। मैं तुम्हें तैनात रखेंगे। एक बार फिर धन्यवाद ! – lollancf37

2

: सुनिश्चित करें कि सभी फ़ाइल नाम अद्वितीय हैं। dir/file.cpp संकलन का परिणाम obj/file.obj होगा। जब संकलक otherdir/file.cpp संकलित करता है तो परिणाम obj/file.obj होगा - पिछली ऑब्जेक्ट फ़ाइल ओवरराइट की जाएगी। यह वीएस 2008 और पिछले संस्करणों में मामला है, और मुझे संदेह है कि यह अभी भी वीएस 2010 में मामला है।

मैं भी आपके द्वारा किए गए स्रोत कोड को व्यवस्थित करता हूं। मैं निम्नलिखित नामकरण योजना का उपयोग कर समाप्त हुआ: यदि स्रोत फ़ाइल का पथ Dir/Subdir/AnotherSubDir/File.cpp होगा, तो मैं फ़ाइल Dir/Subdir/AnotherSubdir/DirSubdirAnotherSubdirFile.cpp नाम दूंगा। बदसूरत? हाँ। लेकिन यह एक ऐसी परियोजना को धक्का देता है जो लिंक नहीं करेगा, और यह पता लगाना आसान है कि फ़ाइल का नाम क्या होना चाहिए। मुझे लगता है कि आप फ़ाइल पर अनुक्रम संख्या जोड़ सकते हैं, लेकिन मैंने सोचा कि यह उलझन में होगा। साथ ही, यदि आप फ़ाइल का नाम अद्वितीय बनाना भूल जाते हैं, तो त्रुटि स्पॉट के लिए स्पष्ट नहीं है। खासकर जब आप थक गए हैं, और अपने मंगेतर/पत्नी प्रतीक्षा कर रहा है ...

+0

मैं जो कह रहा हूं उसे प्राप्त करता हूं लेकिन मुझे यह समस्या नहीं थी, लेकिन मैं इसे ध्यान में रखूंगा क्योंकि यह संभवतः होता है। धन्यवाद – lollancf37

+0

विषय से थोड़ी दूर होने के लिए खेद है, लेकिन मुझे लगा कि मुझे आपको एक सिर देना चाहिए। चीयर्स! –

4

वी.एस. में आप CMake में इस तरह से इस्तेमाल कर सकते हैं परियोजनाओं समूहीकरण के लिए (2.8.3 ver के बाद)

//turn on using solution folders 
set_property(GLOBAL PROPERTY USE_FOLDERS ON) 

//add test projects under 1 folder 'Test-projects' 
FOREACH(TEST ${TESTS_LIST}) 
    add_test(NAME ${TEST} COMMAND $<TARGET_FILE:${TEST}>) 
    set_tests_properties(${TEST} PROPERTIES TIMEOUT 1) 
    set_property(TARGET ${TEST} PROPERTY FOLDER "Test-projects") 
ENDFOREACH(TEST) 
+0

छोटे साइड-नोट: विजुअल स्टूडियो एक्सप्रेस फ़ोल्डर्स का समर्थन नहीं करता है, यही कारण है कि USE_FOLDERS को पहले स्थान पर सेट करना होगा – Infinite

-2

स्वीकार किए जाते हैं समाधान Xcode 6. के रूप में Xcode के लिए काम नहीं करता है हालांकि, वहाँ एक सरल समाधान नहीं है:

  1. अपने Xcode प्रोजेक्ट से (साइडबार में उन्हें हटा दें, तो लेने के "संदर्भ निकालें") स्रोत फ़ाइलों के लिए संदर्भ को हटा दें।
  2. रूट फ़ोल्डर को वापस जोड़ें, सुनिश्चित करें कि "समूह बनाएं" चेक किया गया है, और वांछित लक्ष्य (0) चुनें।

ताडा! अब आपकी फाइलें खोजक में फ़ोल्डर संरचना से मेल खाना चाहिए।

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