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 eine, find_package()
die eine Find*.cmake
Datei öffnet und nach der Bibliothek im System sucht und einige Variablen wie SomeLib_FOUND
usw. definiert .
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 sucht, Find*.cmake
und ich habe das Verzeichnis hinzugefügt, SomeLib
in dem FindSomeLib.cmake
das gefunden werden kann, damit es find_package()
wie erwartet funktioniert.
Dies ist jedoch etwas seltsam, da einer der Gründe dafür darin find_package()
besteht, sich von nicht codierungsübergreifenden, hartcodierten Pfaden zu entfernen.
Wie wird das normalerweise gemacht? Soll ich das cmake/
Verzeichnis von SomeLib
in mein Projekt kopieren und das CMAKE_MODULE_PATH
relativ einstellen ?