मैं CMake का उपयोग करके एक क्रॉस-प्लैटफॉर्म बिल्ड सिस्टम प्राप्त करने की कोशिश कर रहा हूं। अब सॉफ्टवेयर में कुछ निर्भरताएं हैं। मैंने उन्हें खुद संकलित किया और उन्हें अपने सिस्टम पर स्थापित किया।
कुछ उदाहरण फ़ाइलें जो स्थापित हो गईं:
-- Installing: /usr/local/share/SomeLib/SomeDir/somefile
-- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile
-- Installing: /usr/local/lib/SomeLib/somesharedlibrary
-- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake
-- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake
अब CMake के पास एक फाइल है जो सिस्टम पर लाइब्रेरी के बाद find_package()एक Find*.cmakeफाइल खोलता है और खोजता है और कुछ चर जैसे SomeLib_FOUNDआदि को परिभाषित करता है ।
मेरे CMakeLists.txt में कुछ इस तरह है:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
पहला कमांड परिभाषित करता है कि सीएमके खोज करने के बाद कहां जाता है Find*.cmakeऔर मैंने उस निर्देशिका को जोड़ा SomeLibजहां FindSomeLib.cmakeपाया जा सकता है, इसलिए find_package()उम्मीद के मुताबिक काम करता है।
लेकिन यह अजीब तरह का है क्योंकि find_package()मौजूद कारणों में से एक गैर-क्रॉस-प्लैटफॉर्म हार्ड कोडेड पथ से दूर होना है।
यह आमतौर पर कैसे किया जाता है? क्या मुझे अपनी परियोजना की cmake/निर्देशिका को कॉपी करना चाहिए SomeLibऔर CMAKE_MODULE_PATHअपेक्षाकृत सेट करना चाहिए ?