আমি সিএমকে ব্যবহার করে ক্রস-প্ল্যাটফর্ম বিল্ড সিস্টেমটি কাজ করার চেষ্টা করছি। এখন সফ্টওয়্যারটির কয়েকটি নির্ভরতা রয়েছে। আমি সেগুলি নিজেই সংকলন করেছি এবং এগুলি আমার সিস্টেমে ইনস্টল করেছি।
ইনস্টল হওয়া কয়েকটি উদাহরণ ফাইল:
-- 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
এখন সিএমকে find_package()
একটি Find*.cmake
ফাইল খোলে এবং সিস্টেমে লাইব্রেরির পরে অনুসন্ধান করে এবং কিছু ভেরিয়েবল SomeLib_FOUND
ইত্যাদি সংজ্ঞায়িত করে etc.
আমার সিএমকেলিস্ট.টেক্সটে এমন কিছু রয়েছে:
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
তুলনামূলকভাবে সেট করব ?