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?

questionAnswers(4)

yourAnswerToTheQuestion