CMake: Jaki jest pożytek z find_package (), jeśli mimo wszystko chcesz podać CMAKE_MODULE_PATH?
Próbuję uzyskać system budowania cross-plattform działający przy użyciu CMake. Teraz oprogramowanie ma kilka zależności. Sam je skompilowałem i zainstalowałem w swoim systemie.
Niektóre przykładowe pliki, które zostały zainstalowane:
-- 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
Teraz CMake mafind_package()
który otwiera aFind*.cmake
plik i przeszukuje bibliotekę w systemie i definiuje niektóre zmienne, takie jakSomeLib_FOUND
itp.
Mój CMakeLists.txt zawiera coś takiego:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
Pierwsze polecenie określa, gdzie CMake szuka poFind*.cmake
i dodałem katalogSomeLib
gdzieFindSomeLib.cmake
można znaleźć, takfind_package()
działa zgodnie z oczekiwaniami.
Ale to trochę dziwne, ponieważ jeden z powodówfind_package()
istnieje odejście od utartych ścieżek, które nie są krzyżowe.
Jak to zwykle się robi? Czy powinienem skopiowaćcmake/
katalog zSomeLib
do mojego projektu i ustawCMAKE_MODULE_PATH
stosunkowo?