2014-01-23 3 views
8

ich Fenster und mein Cmake prüft einen Code über für das Paket libavahi bin Portierung haben mitWas ist der Standardsuchpfad für find_package in Windows mit cmake?

find_package(Libavahi) 

ich die Header, dll, etc., aber ich bin nicht sicher, wo diese so zu platzieren, dass Cmake finden Sie.

Wo kann ich diese Dateien von cmake gefunden werden? Sie sind in einem Ordner namens usr.

Ich sehe, dass der Modulpfad angegeben wird mit:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") 

aber ich frage mich, ob es eine Standardposition ist, die ebenfalls durchsucht werden

+0

Sie können die Antwort auf ["find libavahi with cmake"] (http://stackoverflow.com/a/18630794/2419207) überprüfen, die Links zu relevanten Teilen der cmake-Dokumentation enthält. – iljau

Antwort

11

Die CMake manual vollständig die ziemlich komplizierte Suche spezifizieren Bestellung für die verschiedenen find_* Befehle. Da Windows leider keine Standardverzeichnisstruktur à la /usr/local/lib hat, ist es schwer, hier vernünftige Standardwerte zu finden.

Eine der zuverlässigsten Arten der Verwaltung von Verzeichnissen ist durch Umgebungsvariable Hinweise. Sie fügen einfach $ENV{MY_VAR} in den Abschnitt HINTS des Befehls find ein und dokumentieren diese Umgebungsvariable in der Readme Ihres Projekts. Die meisten Benutzer, die in der Lage sind, ein C++ - Programm zu kompilieren, wissen, wie man Umgebungsvariablen verwendet, und es ist viel bequemer, als jedes Mal den Pfad in der Befehlszeile angeben zu müssen (obwohl es als zusätzliche Option nie schadet).

Für find_package bietet CMake einen speziellen Mechanismus unter Windows package registry an. CMake unterhält eine Liste von Paketinformationen in der Windows-Registrierung unter HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\. Pakete, die aus der Quelle erstellt wurden, können sich dort mit dem Befehl export registrieren. Andere später auf demselben Rechner erstellte Projekte können dann dieses Paket ohne zusätzliche Konfiguration finden. Dies ist sehr leistungsfähig, wenn Sie viele voneinander abhängige Projekte von der Quelle auf demselben Rechner erstellen müssen.

+0

+1 für den Tipp $ ENV {VAR}. Es ist genau das, was ich in meinen Projekten verwende und funktioniert sehr gut (sogar unter Unix). –

+0

Ich habe das Verzeichnis der Dateien mit dem Parameter HINTS angegeben. Unter Linux war der NAMES-Parameter für libavahi 'libavahi-client.so'. Ich habe versucht 'libavahi-client.dll.a', gefunden (mit Hints) in' C:/Dokumente \ und \ Einstellungen/IEUser/Meine \ Dokumente/Downloads/Avahi-Client/usr/lib/'aber immer noch kein Glück. Irgendeine Empfehlung? – JuJoDi

+1

+1 für den Exportbefehl – Danduk82

Verwandte Themen