J'envisage de basculer un projet multiplateforme de systèmes de gestion de génération distincts dans Visual C++, XCode et makefiles vers CMake.
Une fonctionnalité essentielle dont j'ai besoin est d'ajouter automatiquement tous les fichiers d'un répertoire à une cible. Bien que ce soit facile à faire avec make, ce n'est pas facilement faisable avec Visual C++ et XCode (corrigez-moi si je me trompe). Est-il possible de le faire directement dans CMake? Comment?
C'est possible. Par exemple. 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 manuel la relance de cmake
si un fichier source est ajouté ou supprimé, car le système de compilation généré ne sait pas quand demander à CMake de se régénérer, et le faire à chaque construction augmenterait le temps de construction.
La réponse de Kleist fonctionne certes, mais il y a une mise en garde importante:
Lorsque vous écrivez manuellement Makefile
, vous pouvez générer une variable SRCS
à l'aide d'une fonction permettant de sélectionner tous les fichiers .cpp
Et .h
. Si un fichier source est ajouté ultérieurement, la réexécution de make
l'inclura.
Cependant, CMake (avec une commande telle que 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 régénérer le Makefile
en réexécutant cmake
.
edit: Pas besoin de supprimer le Makefile.