CMake: lier une bibliothèque à une bibliothèque
J'ai un problème avec cmake. J'ai, disons, CMakeLists1 qui a un sous-répertoire où CMakeLists2 est.
Dans CMakeLists2 ma cible est une bibliothèque statique. Et je veux le lien de bibliothèque externe.
J'ai fait comme ça:
link_directories ("path_to_library")
add_library (project2 ${sources})
target_link_libraries (project2 "name_of_external_lib")
Alors, je veux utiliser une classe à partir de ce projet2 dans mon projet1. Je l'ai fait de cette façon:
add_executable (project1 ${sources})
target_link_libraries (project1 project2)
Mais qui ne fonctionne pas du tout. Tout d'abord, project2 n'ai pas de lien à une bibliothèque externe. Juste pour vérifier, j'ai ajouté cette bibliothèque grâce à vs10 propriétés du projet, et les tailles sont différentes. Et la deuxième chose, en quelque sorte projet1 voit qu'une bibliothèque externe (c'est dans les dépendances de la bibliothèque de ce projet) et bien sûr, ne peut pas trouver.
Quel est le problème?
source d'informationauteur Ov3r1oad
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est CMakes comportement par défaut de ne pas lier project2 à la bibliothèque externe,
mais pour lier les deux bibliothèques de l'exécutable.
À partir du livre "la maîtrise de CMake" :
Vous pouvez essayer d'utiliser un chemin absolu dans votre CMakeLists2:
ou vous pouvez ajouter
à la CMakeLists fichier de projet1.
Si vous voulez vraiment faire quelque chose comme dans Visual Studio, vous pourriez probablement utiliser la commande donnée dans ce réponse de construire un custom_command dans CMake.
Il serait probablement ressembler à quelque chose comme ceci (je n'ai pas tester).
Vous pouvez lier votre exécutable avec ${BIG_LIB}.
Certaines choses que vous avez à prendre en compte:
Je suppose que le problème sera probablement que *name_of_external_lib* n'est pas correct de sorte qu'il ne peut pas le trouver.
Je voudrais aller avec:
Si cela ne fonctionne pas, ont une lecture rapide de l'exemple de la cmake docs:
http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:target_link_libraries
Une chose qu'il cite dans y est:
Donc je dirais que l'autre chose à essayer peut-être dans projet2:
puis dans l'exe:
Qui auront la "external_lib" liens répété dans les deux endroits et vous donner plus de chance de fonctionner 😉