CMake kullanarak çalışan bir çapraz platform oluşturma sistemi elde etmeye çalışıyorum. Şimdi yazılımın birkaç bağımlılığı var. Onları kendim derledim ve sistemime kurdum.
Yüklü bazı örnek dosyalar:
-- 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
Şimdi CMake, bir dosyayı find_package()açan Find*.cmakeve sistemdeki kütüphaneyi arayan ve SomeLib_FOUNDvb. Gibi bazı değişkenleri tanımlayan bir dosyaya sahiptir .
CMakeLists.txt dosyamda şöyle bir şey var:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
İlk komut, CMake'in nerede aradığını tanımlar ve bulunabileceği Find*.cmakedizini ekledim , bu yüzden beklendiği gibi çalışır.SomeLibFindSomeLib.cmakefind_package()
Ancak bu biraz gariptir, çünkü find_package()var olmanın nedenlerinden biri, platforma olmayan sabit kodlu yollardan uzaklaşmaktır.
Bu genellikle nasıl yapılır? Ben kopya mı cmake/dizinini SomeLibbenim projeye ve set CMAKE_MODULE_PATHnispeten?