Question

J'ai deux projets, les deux utilisant CMake. Maintenant, je veux inclure un des projets comme une bibliothèque dans l'autre, tout en conservant la possibilité de les compiler en tant que projets autonomes.

Ce que je l'ai fait jusqu'à présent est: Utilisez le système de contrôle de version pour cloner une copie du projet d'enfant dans un sous-répertoire du projet parent. Je l'ai utilisé le « add_subdirectory » pour y inclure le CMakeLists.txt du projet enfant dans le projet parent. Et je les collisions de noms fixes entre les cibles en renommant certains des objectifs dans le projet enfant.

Cependant, une question que je me présente en est que les différents tests de configuration dans le projet enfant ne semblent pas être en cours d'exécution. Par exemple, le projet enfant utilise le module FindThreads pour déterminer les primitives de synchronisation sont disponibles. Le projet parent ne connaît pas les problèmes de filetage et donc pas de tests liés à cela. De même, le projet enfant a divers tests pour les en-têtes et autres qui ne sont pas nécessaires par le projet parent. Aucun de ces tests semblent être en cours d'exécution, et les symboles définis par ces tests ne sont pas ajoutés au fichier CMakeCache.txt.

Je ne veux vraiment pas avoir à hisser tous les essais du projet des enfants (qui traitent principalement des questions spécifiques à la plateforme qui ne sont pas pertinentes pour le parent) dans CMakeLists.txt du projet parent.

Était-ce utile?

La solution

CMake 2.8 a ajouté une nouvelle Projet externe module, qui vous permet de créer une cible personnalisée pour conduire la construction d'un autre projet CMake. La documentation sur ce genre est de faible, mais il semble que cela pourrait faire ce que vous voulez.

Je pense que l'idée serait d'appeler ExternalProject_Add de votre projet parent, pointant vers le répertoire source du projet d'enfant (vous pouvez même avoir vérifier le projet enfant sur SVN ou CVS pour vous, bien!).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top