web-dev-qa-db-fra.com

Ajouter tous les fichiers d'un dossier à un CMake glob?

Je viens de lire ceci:

CMake - Ajouter automatiquement tous les fichiers d'un dossier à une cible?

Avec la réponse suggérant un fichier glob, par exemple:

file(GLOB "*.h" "*.cpp")

maintenant, que se passe-t-il si je veux que ma cible dépende de tous les fichiers d'un certain type dans un certain dossier - qui peuvent se trouver dans plusieurs sous-dossiers? J'ai essayé d'utiliser

execute_process(COMMAND find src/baz/ -name "*.cpp" OUTPUT_VARIABLE BAR)

puis

add_executable(foo ${BAR}

mais cela me donne l'erreur:

Impossible de trouver le fichier source:

  src/baz/some/file/here

src/baz/some/other_file/here

src/baz/some/other_file/here2

(oui, avec cet espacement.)

Qu'est-ce que je fais mal ici?

11
einpoklum

Transformer mon commentaire en réponse

Si vous souhaitez ajouter une recherche récursive de fichiers, utilisez file(GLOB_RECURSE ...)

file(GLOB_RECURSE source_list "*.cpp" "*.hpp")

Votre deuxième exemple se traduirait par

file(GLOB_RECURSE BAR "src/baz/*.cpp")

Références

20
Florian