CMake: Wozu dient find_package (), wenn Sie CMAKE_MODULE_PATH angeben müssen?

Ich versuche, ein plattformübergreifendes Build-System mit CMake zum Laufen zu bringen. Jetzt hat die Software einige Abhängigkeiten. Ich habe sie selbst kompiliert und auf meinem System installiert.

Einige Beispieldateien, die installiert wurden:

-- 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

Jetzt hat CMake einefind_package() das öffnet einFind*.cmake Datei und sucht nach der Bibliothek auf dem System und definiert einige Variablen wieSomeLib_FOUND usw.

Meine CMakeLists.txt enthält ungefähr Folgendes:

set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)

Der erste Befehl definiert, wo CMake nach dem suchtFind*.cmake und ich fügte das Verzeichnis vonSomeLib bei dem dieFindSomeLib.cmake gefunden werden kann, sofind_package() funktioniert wie erwartet.

Aber das ist irgendwie komisch, weil einer der Gründe dafür istfind_package() Existiert, ist es, von nicht plattformübergreifenden fest codierten Pfaden wegzukommen.

Wie wird das normalerweise gemacht? Soll ich das kopieren?cmake/ Verzeichnis vonSomeLib in mein projekt und setze dasCMAKE_MODULE_PATH verhältnismäßig?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage