La meilleure façon de spécifier sourcefiles dans CMake est en les inscrivant explicitement.
Les créateurs de CMake eux-mêmes conseillent de ne pas utiliser d'expansion.
Voir: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:file
(Nous ne recommandons pas d'utiliser GLOB pour collecter une liste de fichiers source de votre arborescence des sources. Si aucun CMakeLists.txt les modifications du fichier lorsqu'une source est ajouté ou supprimé, l'généré système de construction ne peut pas savoir quand demander de CMake pour se régénérer.)
Le gros désavantage de l'expansion est de créer de nouveaux fichiers ne sont pas automatiquement mise à jour de la construction du système.
Si vous êtes la personne à ajouter les fichiers, ce qui peut sembler un compromis acceptable, la question principale qui se passe lorsque d'autres personnes sont la construction de votre code, ils mettent à jour la le projet de contrôle de version, exécutez construire, avec vous, pour se plaindre que l'échec de la construction.
Pour aggraver les choses, l'échec typiquement donne une erreur de couplage qui ne donnent pas toutes les allusions à la cause du problème et le temps est perdu de dépannage.
Dans un projet, j'ai travaillé sur, nous avons commencé d'expansion, mais il a obtenu suffisamment de plaintes lorsque de nouveaux fichiers ont été ajoutés, que c'était une raison suffisante pour éloigner d'expansion.
Donc, je ne peux que recommander ce, les problèmes qu'elle provoque l'emportent de loin sur la commodité, lorsque quelqu'un ne peut pas construire votre logiciel de ce fait, ils risquent de perdre beaucoup de temps à traquer la question ou tout simplement abandonner.
Et une autre remarque, Juste se souvenir de toucher CMakeLists.txt
n'est pas toujours suffisant, avec automatisation des builds je le programme d'installation lors de l'utilisation d'expansion, j'ai dû lancer cmake avant chaque génération depuis les fichiers peuvent avoir été ajoutés/supprimés depuis la dernière bâtiment *.
La seule fois où je recommanderais d'expansion est...
- Pour la mise en place d'un
CMakeLists.txt
fichiers pour les projets existants qui ne sont pas utiliser CMake son d'un moyen rapide pour obtenir tous les source référencée rapidement (puis développez l'expansion dans les listes de fichiers lors de la construction du système est en place et en cours d'exécution).
- Pour toute situation où la liste des fichiers change tellement souvent qu'il devient impossible à maintenir. Dans ce cas, il pourrait être utile, mais alors vous devez accepter l'exécution
cmake
à chaque fois pour obtenir un fiable/corriger construire (ce qui va à l'encontre de l'intention de CMake - la capacité de séparer la configuration de la construction).
* Oui, je pourrais avoir écrit un code de comparer l'arborescence des fichiers sur le disque avant et après une mise à jour, mais ce n'est pas une solution de contournement de nice et quelque chose de mieux à gauche jusqu'à la construction du système.