Saya mencoba agar sistem build lintas-plattform bekerja menggunakan CMake. Sekarang perangkat lunak memiliki beberapa dependensi. Saya mengkompilasinya sendiri dan menginstalnya di sistem saya.
Beberapa contoh file yang terinstal:
-- 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
Sekarang CMake memiliki find_package()yang membuka Find*.cmakefile dan mencari pustaka pada sistem dan mendefinisikan beberapa variabel seperti SomeLib_FOUNDdll.
CMakeLists.txt saya berisi sesuatu seperti ini:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
Perintah pertama menentukan di mana CMake mencari Find*.cmakedan saya menambahkan direktori di SomeLibmana FindSomeLib.cmakedapat ditemukan, jadi find_package()berfungsi seperti yang diharapkan.
Tapi ini agak aneh karena salah satu alasan mengapa find_package()ada adalah untuk menjauh dari jalur kode keras non-cross-plattform.
Bagaimana ini biasanya dilakukan? Haruskah saya menyalin cmake/direktori SomeLibke dalam proyek saya dan mengatur CMAKE_MODULE_PATHrelatif?