আমি সিএমকে ব্যবহার করে ক্রস-প্ল্যাটফর্ম বিল্ড সিস্টেমটি কাজ করার চেষ্টা করছি। এখন সফ্টওয়্যারটির কয়েকটি নির্ভরতা রয়েছে। আমি সেগুলি নিজেই সংকলন করেছি এবং এগুলি আমার সিস্টেমে ইনস্টল করেছি।
ইনস্টল হওয়া কয়েকটি উদাহরণ ফাইল:
-- 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তুলনামূলকভাবে সেট করব ?