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*.cmake
file dan mencari pustaka pada sistem dan mendefinisikan beberapa variabel seperti SomeLib_FOUND
dll.
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*.cmake
dan saya menambahkan direktori di SomeLib
mana FindSomeLib.cmake
dapat 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 SomeLib
ke dalam proyek saya dan mengatur CMAKE_MODULE_PATH
relatif?