Est-il possible d'utiliser install (TARGETS ...) avec des cibles définies dans les répertoires ajoutés avec add_subdirectory?install (TARGETS ...) et add_subdirectory
Mon cas d'utilisation est, que je veux construire, par exemple, un rpm pour gtest. le projet gtest arrive à avoir un CMakeLists.txt sans aucune instruction d'installation. Je veux construire le paquet sans ajouter ces instructions au CMakeLists.txt de gtest.
J'ai cette structure de répertoire résultant:
+ gtest-1.5.0/...
+ CMakeLists.txt
Les CMakeLists de gtest-1.5.0 définit les bibliothèques comme ceci:
cxx_static_library(gtest "${cxx_strict}" src/gtest-all.cc)
cxx_static_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
target_link_libraries(gtest_main gtest)
maintenant je veux ajouter quelque chose comme ça à mes CMakeLists. txt:
add_subdirectory(gtest-1.5.0)
install(TARGETS gtest gtest_main ARCHIVE DESTINATION lib)
mais cmake déclare à juste titre:
CMake Error at CMakeLists.txt:10 (install):
install TARGETS given target "gtest" which does not exist in this
directory.
Existe-t-il un moyen de faire cela sans patcher gtest-1.5.0?
ok .. cela pourrait fonctionner, mais je ne comprends pas, pourquoi je peux utiliser les noms définis dans TARGET_LINK_LIBRARIES et non pas dans l'installation des commandes! – Gizmomogwai
La commande Install ne regarde que le répertoire en cours pour savoir si une cible existe, contrairement à target_link_libraries qui analyse toutes les cibles. – RobertJMaynard
Ok ... merci pour l'explication, j'ai pensé quelque chose comme ça, mais je n'étais pas sûr (pourriez-vous éditer votre installation (commande FILES, car install (FILES ne prend pas le paramètre ARCHIVE). – Gizmomogwai