मैं 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
अपेक्षाकृत सेट करना चाहिए ?