Comment puis-je créer correctement les dépendances entre les cibles dans CMake?

Je suis en train d'utiliser CMake pour définir de simples dépendances entre un projet C++ et les bibliothèques qu'il utilise.

La mise en place est comme suit

  • Projet
    • Dépendance

Projet lui-même contient les fichiers source qui incluent des en-têtes de Dependency et lors de la construction de l'exécutable, il doit être lié à l'encontre de Dependency's bibliothèque statique.

Jusqu'à présent je peux obtenir que cela fonctionne, mais je dois spécifier les répertoires include de Dependency dans le CMakeLists.txt fichier pour Project manuellement. Je veux que ce soit retirés automatiquement, et j'ai exploré la possibilité d'utiliser le find_package() commande de le faire avec un succès limité et rendre les choses beaucoup plus compliquées.

Tout ce que je veux faire est de les avoir Dependency construits avant Project et ont Project lien en face de la bibliothèque et inclure des répertoires. Est-il une simple manière concise d'atteindre cet objectif?

Mes fichiers CMake:

Project, fichier CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)
project (Project)
include_directories ("${PROJECT_SOURCE_DIR}/Project")
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
add_dependencies(Project Dependency)

Dependency, fichier CMakeLists.txt:

project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
InformationsquelleAutor radman | 2011-02-05