Was ist die Standard-such-Pfad für find_package in windows mit cmake?
Ich bin die Portierung von code über windows und meine cmake prüft das Paket Libavahi mit
find_package(Libavahi)
Habe ich den Header, dll, etc. aber ich bin mir nicht sicher, wo Sie platzieren Sie diese so, dass cmake zu finden.
Wo kann ich diese Dateien gefunden werden, die von cmake? Sie sind in einem Ordner namens usr
.
Ich sehen, dass der Modul-Pfad angegeben ist mit:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
aber ich Frage mich, ob es eine Standard-Speicherort, der durchsucht werden, als auch
- Überprüfen Sie die Antwort auf "finden libavahi mit cmake", die links auf die relevanten Teile der cmake-Dokumentation.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den CMake-Anleitung voll gibt die eher komplizierte Suche, um für die verschiedenen
find_*
Befehle. Leider, denn Windows fehlt ein Standard-Verzeichnis-Struktur à la/usr/local/lib
ist es schwer zu kommen mit vernünftigen defaults hier.Einer der zuverlässigsten Methoden zur Verwaltung der Verzeichnisse wird durch die environment-variable Hinweise. Fügen Sie einfach ein
$ENV{MY_VAR}
zu denHINTS
Abschnitt der Befehl suchen und dokumentieren, dass die environment-variable in Ihrem Projekt readme-Datei. Die meisten Nutzer, die in der Lage sind, das kompilieren eines C++ - Programms kennen, wie Sie Umgebungsvariablen verwenden, und es ist viel bequemer, als wenn man den Pfad in der Befehlszeile jedes mal, (obwohl es schadet nie, es zu verlassen, die als eine zusätzliche option).Für
find_package
CMake bietet einen speziellen Mechanismus auf Windows genannt Paket-Registrierung. CMake verwaltet eine Liste von Paket-Informationen in der Windows registry unterHKEY_CURRENT_USER\Software\Kitware\CMake\Packages\
. Pakete von der Quelle erstellen können, registrieren Sie es mit demexport
Befehl. Andere Projekte bauen, die später auf der gleichen Maschine wird dann in der Lage sein zu finden, dass das Paket ohne zusätzliche Konfiguration. Dies ist sehr mächtig, wenn Sie brauchen, um zu bauen eine Menge von untereinander abhängigen Projekten von der Quelle auf der gleichen Maschine.Update: Ab der version 3.12, CMake jetzt implizit vertritt die Auffassung, die
<Paketname>_Root
environment-variable einHINWEIS
für jedenfind_package
nennen.libavahi-client.so
. Ich habe versuchtlibavahi-client.dll.a
liegt (mit HINWEISEN) inC:/Documents\ and\ Settings/IEUser/My\ Documents/Downloads/avahi-client/usr/lib/
aber noch kein Glück. Jede Empfehlung?