Qu'est-ce que le chemin de recherche par défaut pour find_package dans windows en utilisant cmake?
Je suis le portage de code sur windows et mon cmake vérifie le paquet Libavahi à l'aide de
find_package(Libavahi)
J'ai les en-têtes, dll, etc. mais je ne suis pas sûr de savoir où placer ces telles que cmake va les trouver.
Où puis-je mettre ces fichiers à être trouvé par cmake? Ils sont dans un dossier appelé usr
.
Je vois que le chemin d'accès du module est spécifié à l'aide de:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
mais je me demandais si il y a un emplacement par défaut qui sera recherché ainsi
Vous voudrez peut-être vérifier répondre à "trouver libavahi avec cmake", qui contient des liens vers les parties pertinentes de la documentation de cmake.
OriginalL'auteur JuJoDi | 2014-01-23
Vous devez vous connecter pour publier un commentaire.
La Manuel de CMake spécifie complètement plutôt compliqué ordre de recherche pour les différents
find_*
commandes. Malheureusement, depuis Windows manque d'une structure de répertoires par défaut à la/usr/local/lib
, il est difficile de venir avec des valeurs par défaut raisonnables ici.L'une des façons les plus fiables de gestion des répertoires est par le biais de la variable d'environnement conseils. Vous ajoutez simplement un
$ENV{MY_VAR}
à laHINTS
section de la commande rechercher et document que la variable d'environnement dans votre projet readme. La plupart des utilisateurs qui sont capables de la compilation d'un programme C++ de savoir comment utiliser les variables d'environnement, et c'est plus pratique que d'avoir à donner de la voie sur la ligne de commande à chaque fois (bien qu'il ne fait jamais de mal à laisser cela comme une option supplémentaire).Pour
find_package
CMake offre un mécanisme spécial sur Windows appelé le paquet de registre. CMake tient à jour une liste du paquet d'informations dans le registre Windows sousHKEY_CURRENT_USER\Software\Kitware\CMake\Packages\
. Paquets de construire à partir de la source peut y inscrire à l'aide de laexport
de commande. D'autres projets de construire plus tard sur la même machine sera alors en mesure de trouver le paquet sans configuration supplémentaire. C'est assez puissant si vous avez besoin de construire un grand nombre de projets interdépendants de la source sur la même machine.Mise à jour: à Partir de la version 3.12, CMake maintenant considère implicitement le
<Paquet>_Root
variable d'environnementINDICE
pour chaquefind_package
appel.J'ai précisé les fichiers du répertoire avec les CONSEILS param. Sur Linux, les NOMS des param pour libavahi était
libavahi-client.so
. J'ai essayélibavahi-client.dll.a
, situé (à l'aide d'indices) dansC:/Documents\ and\ Settings/IEUser/My\ Documents/Downloads/avahi-client/usr/lib/
mais toujours pas de chance. Toute recommandation?+1 pour la commande d'exportation
l'exportation approche est mieux que le mondial C:\Program Files (x86)\CMake\share\cmake-3.3\répertoire des Modules!
Dans le cas où quelqu'un est un cmake syntaxe tard comme moi... Voici un exemple de ligne(Esprit que OpenCV est mon colis, et j'ai créé OPENCV_DIR dans les variables d'environnement et des points à l'open cv répertoire de build sur mon système (à partir de la source)) : find_package( OpenCV NÉCESSAIRE ASTUCES $ENV{OPENCV_DIR})
OriginalL'auteur ComicSansMS