Ajouter automatiquement tous les fichiers d’un dossier à une cible à l’aide de CMake?

J’envisage de passer d’un projet multi-plateforme de systèmes de gestion de build séparés dans Visual C ++, XCode et makefiles à CMake.

Une fonction essentielle est d’append automatiquement tous les fichiers d’un répertoire à une cible. Bien que cela soit facile à faire avec make, il est difficile de le faire avec Visual C ++ et XCode (corrigez-moi si je me trompe). Est-il possible de le faire directement dans CMake? Comment?

N’hésitez pas à append tout ce que je devrais savoir avant d’apprendre CMake, étant donné qu’à l’heure actuelle, le projet est de taille moyenne (8 bibliothèques, 2 exécutables, 8 projets de test et il dépend d’environ 8 bibliothèques externes).

C’est possible. Avec file(GLOB :

 cmake_minimum_required(VERSION 2.8) file(GLOB helloworld_SRC "*.h" "*.cpp" ) add_executable(helloworld ${helloworld_SRC}) 

Notez que cela nécessite une ré-exécution manuelle de cmake si un fichier source est ajouté ou supprimé, car le système de génération généré ne sait pas quand demander à CMake de régénérer, et le faire à chaque version augmente le temps de construction.

La réponse de Kleist fonctionne certainement, mais il y a une mise en garde importante:

Lorsque vous écrivez un Makefile manuellement, vous pouvez générer une variable SRCS utilisant une fonction pour sélectionner tous les fichiers .cpp et .h . Si un fichier source est ajouté ultérieurement, le relancer fera l’inclure.

Cependant, CMake (avec une commande comme file(GLOB ...) ) générera explicitement une liste de fichiers et la placera dans le Makefile généré automatiquement. Si vous avez un nouveau fichier source, vous devrez recréer le Makefile en cmake .

edit: Pas besoin de supprimer le Makefile.