4
การใช้งานคือ find_package () ถ้าคุณต้องการระบุ CMAKE_MODULE_PATH แล้วล่ะ?
ฉันกำลังพยายามทำให้ cross-plattform build system ทำงานโดยใช้ 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) คำสั่งแรกกำหนดที่ CMake ค้นหาหลังจากFind*.cmakeและฉันเพิ่มไดเรกทอรีของSomeLibที่FindSomeLib.cmakeสามารถพบได้จึงfind_package()ทำงานตามที่คาดไว้ แต่นี่เป็นสิ่งที่แปลกเพราะหนึ่งในเหตุผลที่find_package()มีอยู่คือการหลีกเลี่ยงเส้นทางที่มีการเข้ารหัสแบบไม่ข้าม - แพลตฟอร์ม มักจะทำเช่นนี้ได้อย่างไร ฉันควรคัดลอกcmake/ไดเรกทอรีSomeLibไปยังโครงการของฉันและตั้งค่าCMAKE_MODULE_PATHค่อนข้าง
167
cmake