मैं थोड़ी देर के लिए इसके साथ संघर्ष कर रहा हूं, और सेमेक के साथ मेरे रोमांच ने केवल हैकिश समाधानों का परिणाम दिया है जो मुझे यकीन है कि सही नहीं हैं।मेरे सी ++ प्रोजेक्ट को सेमेक के साथ ढांचा करने का सही तरीका?
मैं एक पुस्तकालय है कि कई फ़ाइलों के होते हैं बनाया है, इस प्रकार है:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
मैं एक CMakeLists पुस्तकालय (कुछ प्रयोग करने के बाद) को संकलित करने के फ़ाइल में लिखा था, और मैं एक lib.a फाइल उत्पन्न कर सकते हैं। अब मैं इस परियोजना को अन्य परियोजनाओं में लाइब्रेरी के रूप में शामिल करना चाहता हूं, और lib.hpp में इंटरफ़ेस के माध्यम से इसे एक्सेस करना चाहता हूं। निर्देशिका संरचना के संदर्भ में, और मुझे रूट रूट में CMakeLists.txt में क्या डालने की आवश्यकता है, इसे करने का सबसे अच्छा तरीका क्या है?
मेरे वर्तमान प्रयास आदेशों मेरे वर्तमान परियोजना के लिए एक सबफ़ोल्डर के रूप में -libfolder जोड़ते हैं, और जोड़ने के लिए कर दिया गया है:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
जब मैं बनाने के चलाने के लिए, पुस्तकालय ठीक संकलित है, लेकिन जब project.cpp संकलित, यह शिकायत करता है कि यह codepart1.hpp नहीं ढूंढ सकता है (जो lib.hpp में शामिल है, project.cpp से शामिल है)।
मुझे संदेह है कि ऐसा करने का यह गलत तरीका है, लेकिन मैं सीएमके दस्तावेज़ों के माध्यम से नहीं जा सकता और इस तरह की परियोजनाओं को स्थापित करने के लिए एक अच्छा ट्यूटोरियल ढूंढ सकता हूं। गुरुवार को सीएमके मदद करें!
शायद सेमेक प्रति-देखने के लिए बहुत उपयोगी नहीं है, लेकिन मैं सलाह देता हूं कि आप प्रीकेक पर नज़र डालें। यह परिपक्वता परिपक्वता है और इसमें सेमेक के कई फायदे हैं (एक यह है कि यह गति के साथ उठने के लिए बहुत तेजी से एक बिल्ली है, खासकर अगर आप पहले से ही लुआ जानते हैं)। आप इसे http://industriousone.com/what-premake पर देख सकते हैं। – Ylisar
तो, क्या आप अपनी नई परियोजना को पहले निर्मित लाइब्रेरी का उपयोग करने के लिए सक्षम करना चाहते हैं, या आप एक प्रकार के मेटा-प्रोजेक्ट से दोनों बनाना चाहते हैं? – moooeeeep