Ajouter tous les fichiers d'un dossier à un CMake glob?
Je viens de lire ceci:
CMake - ajouter Automatiquement tous les fichiers dans un dossier à une cible?
Avec la réponse, ce qui suggère un fichier glob, par exemple:
file(GLOB "*.h" "*.cpp")
maintenant, si je veux que ma cible dépendent tous les fichiers d'un certain type de sous un certain dossier - qui peut être dans plusieurs sous-dossiers? J'ai essayé d'utiliser
execute_process(COMMAND find src/baz/-name "*.cpp" OUTPUT_VARIABLE BAR)
et puis
add_executable(foo ${BAR}
mais cela me donne l'erreur:
Ne peut pas trouver le fichier source:
src/baz/some/file/here
src/baz/some/other_file/here
src/baz/some/other_file/here2
(oui, avec un espacement.)
Ce que je fais mal?
Peut-être
À l'aide de
Je vais essayer ça. À propos de ce être une mauvaise idée - j'ai lu les liens Florian posté, et pense que je suis d'accord avec cette réponsele premier commentaire sur cette réponse
Je pense que le commentaire que vous avez de référence est de comparer les mauvaises choses: "Mais n'est-il pas vrai que si vous n'avez pas glob, vous avez encore de mettre à jour manuellement CMakeLists.txt, sens cmake est toujours pas de mise à jour automatique du système de génération?" La plainte initiale qui globing les fichiers ne sont pas automatiquement mettre à jour le système de construction n'a pas été en comparaison à un système qui effectue automatiquement la mise à jour du système de génération. Peut-être le point d'origine n'est pas fait tout ce que clairement, mais la plainte a été sur le échec mode des deux méthodes.
Oh, aussi mon commentaire sur l'utilisation de
file(GLOB_RECURSE ...)
? Mais être au courant de Pourquoi est-cmake fichier GLOB mal? et la Meilleure façon de spécifier sourcefiles dans CMakeÀ l'aide de
find
de cette façon est une mauvaise idée, mais vous pouvez résoudre le problème vous semblez avoir avec elle, en ajoutant -type f
.Je vais essayer ça. À propos de ce être une mauvaise idée - j'ai lu les liens Florian posté, et pense que je suis d'accord avec cette réponsele premier commentaire sur cette réponse
Je pense que le commentaire que vous avez de référence est de comparer les mauvaises choses: "Mais n'est-il pas vrai que si vous n'avez pas glob, vous avez encore de mettre à jour manuellement CMakeLists.txt, sens cmake est toujours pas de mise à jour automatique du système de génération?" La plainte initiale qui globing les fichiers ne sont pas automatiquement mettre à jour le système de construction n'a pas été en comparaison à un système qui effectue automatiquement la mise à jour du système de génération. Peut-être le point d'origine n'est pas fait tout ce que clairement, mais la plainte a été sur le échec mode des deux méthodes.
Oh, aussi mon commentaire sur l'utilisation de
find
de cette façon n'était pas à propos de l'habitude globing problème. La raison pour laquelle je vous le déconseille à l'aide de find
ici, c'est parce qu'il ajoute une dépendance, sans raison réelle. file(GLOB_RECURSE ...)
semble être la bonne chose ici.OriginalL'auteur einpoklum | 2016-02-15
Vous devez vous connecter pour publier un commentaire.
En tournant mon commentaire en réponse
Si vous souhaitez ajouter une recherche récursive pour l'utilisation des fichiers
file(GLOB_RECURSE ...)
Votre deuxième exemple se traduire en
Références
file(...)
Est-ce à l'appui à l'exclusion de certains fichiers ?
OriginalL'auteur Florian