J'ai quelques problèmes pour créer le CMakeList pour mon projet. J'ai la structure suivante:CMakeList pour le projet d'en-têtes et l'utiliser dans un autre projet
ProjectAB
|
|--- include
| |--- A.h
| |--- B.h
|
| --- CMakeList.txt
Project1
|
|--- include
| |--- src1.h
|
|--- src
| |--- src1.cpp (#include "src1.h"; #include "A.h"; #include "B.h")
|
| --- CMakeList.txt
ProjectAB est juste composé d'en-têtes, donc je l'ai lu dans les guides CMake et d'autres sources (link) et, enfin, je l'ai écrit la CMakeList suivante pour elle:
cmake_minimum_required(VERSION 3.6.1)
project(lib_projectAB VERSION 1.0.0 LANGUAGES CXX)
add_library(projectAB INTERFACE)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(projectAB
INTERFACE
A.h
B.h
)
maintenant, je veux utiliser les en-têtes de la ProjectAB dans le Projet1. Je dois les installer pour des raisons indépendantes. Je ne sais pas comment les CMakeLists pour les deux projets devraient ressembler.
Je pensais que cela pour le Projet1:
cmake_minimum_required(VERSION 3.6.1)
project(lib_project1 VERSION 1.0.0 LANGUAGES CXX)
add_subdirectory(src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../projectAB/include)
add_library(project1
STATIC
src1.h
src1.cpp
)
target_link_libraries(project1
PUBLIC
third_party_LIBRARIES
lib_projectAB
)
install(
FILES
src1.h
A.h
B.h
DESTINATION
.
)
Mais ce n'est pas élégant ni travail.
Comment serait la bonne façon de faire cela?
Salut Dutow, d'abord merci pour votre temps. J'ai mis à jour la question avec l'emplacement des CMakeLists et aussi avec le droit include_directories ($ {CMAKE_CURRENT_SOURCE_DIR} /../ projectAB/include) Je pensais à ce que vous avez dit à propos de l'ajout de ProjectAB mais je ne peux pas l'ajouter comme sous répertoire Il existe d'autres projets (Project2, Project3 ...) exactement avec la même structure que Project1 qui utilisent ProjectAB. Donc faire une copie sur chacun serait un peu sale. Je considérais aussi l'option de rendre le projetAB "trouvable" par CMake mais je voulais savoir s'il y avait plus d'options. – solosito
L'autre option couramment utilisée est ce que j'ai également mentionné ici: ajouter un cmakefile "top level" dans le répertoire contenant project1 et projectAB, et ajouter les deux projets en tant que sous-répertoires. – Dutow