Existe-t-il un moyen de limiter les fichiers d'en-tête que Boost.Build analyse de façon récursive pour les directives #include à un répertoire particulier ou un ensemble de répertoires? C'est à dire. Je voudrais qu'il scanne récursivement les fichiers d'en-tête dans mon projet seulement. Je sais que les dépendances externes ne vont pas changer (et étant Boost et Qt ils sont assez gros). Je me retrouve avec environ 50 000 cibles dans l'arbre des dépendances, ce qui prend du temps à traiter (ce qui donne un temps de construction de 1 à 2 minutes même si aucun fichier n'a réellement changé). La seule solution que j'ai trouvée jusqu'ici est de tirer parti de la variable d'environnement INCLUDE (j'utilise MSVC) - cela signifie que Boost.Build n'a pas besoin d'être informé des chemins d'inclusion (j'utilise la fonctionnalité) et ne les analysera donc pas. Cela semble un peu un hack. Je sens que je dois manquer quelque chose d'évident parce que je n'ai pas été capable de trouver d'autres personnes rencontrant des problèmes similaires, même si j'ai rencontré cela presque immédiatement. Le plus proche, je suis venu est here. A en juger par la sortie de débogage (bjam -d 3), il scanne aussi la plupart des fichiers d'en-tête plus d'une fois ... Je ne sais pas si cela signifie qu'ils sont ajoutés en tant que dépendances plus d'une fois, mais certainement le coût de chargement d'un fichier et l'analyse de l'ensemble du contenu doit s'additionner? Si je pouvais lui dire de ne pas déranger la numérisation d'un répertoire particulier ou d'un ensemble de répertoires dans lesquels je peux garantir que les fichiers d'en-tête ne vont pas changer, ce serait parfait.Est-il possible d'empêcher Boost.Build d'analyser de manière récursive les fichiers d'en-tête pour les directives #include?
Répondre
Cette question a été aussi postée sur la liste de diffusion Boost et nous avons obtenu une réponse ici: http://lists.boost.org/boost-build/2009/04/21734.php.
Donc, il semble si loin que la réponse est que Boost.Build n'a pas cette fonctionnalité, et la solution est de personnaliser Boost.Construire à vos besoins, ce qui a un certain sens.
Cependant, je suis toujours curieux de savoir pourquoi ce n'est pas un problème plus commun pour les gens. Je vois que la mise en cache des dépendances réduirait le temps, mais sûrement si nous analysons toutes les bibliothèques externes nous nous retrouvons avec un énorme arbre de dépendance, en grande partie redondant? Quand je travaille sur un projet, je ne vais pas changer du tout les bibliothèques tierces très souvent, il semble dommage de payer pour la vérification des dépendances.
Vous voudrez peut-être consulter d'autres outils de construction comme SCons. SCons a un mode --implicit-cache où il met en cache les dépendances implicites. Cela devrait aider dans le scénario que vous avez décrit. Voici un extrait du man page.
--implicit-cache
dépendances implicites de cache. Cela provoque scons à utiliser les dépendances implicites (analysées) de la dernière fois qu'il a été exécuté au lieu d'analyser les fichiers pour les dépendances implicites. Cela peut considérablement accélérer SCons, mais avec les limitations suivantes: scons ne détectera pas les modifications apportées aux chemins de recherche de dépendances implicites (par exemple CPPPATH, LIBPATH) qui entraîneraient normalement l'utilisation de différentes versions de fichiers du même nom. des changements dans les dépendances implicites dans les cas où une nouvelle dépendance implicite est ajoutée plus tôt dans le chemin de recherche de dépendance implicite (par exemple CPPPATH, LIBPATH) qu'une dépendance implicite actuelle avec le même nom.--implicit-deps-changed
Force les entités SCons à ignorer les dépendances implicites mises en cache. Cela provoque les dépendances implicites à rescanned et à recacheter. Cela implique --implicit-cache.--implicit-deps-inchangé
Force SCons à ignorer les modifications dans les dépendances implicites. Cela provoque toujours les dépendances implicites mises en cache à toujours être utilisées. Cela implique --implicit-cache.
- 1. utilisant les directives #include dans Platform Builder fichiers DAT
- 2. Comment automatiser la recherche de directives #include inutilisées?
- 3. Comment copier un répertoire de manière récursive et filtrer les noms de fichiers en Perl?
- 4. Comment puis-je parcourir les liens de manière récursive sans devoir revoir les liens?
- 5. Blob ... comment écrire de manière non récursive
- 6. Organiser en utilisant les directives
- 7. Impossible d'archiver le dossier de manière récursive dans SourceOffsite
- 8. Interrogation sur les directives de conception pour le développement d'applications
- 9. VS2008: Est-il possible d'avoir un formatage personnalisé pour les directives @?
- 10. Dois-je dupliquer les directives Virtualhost pour les ports 80 et 443?
- 11. TCL: Recherche récursive des sous-répertoires pour la source de tous les fichiers .tcl
- 12. supprimer automatiquement les déclarations #include inutiles
- 13. Dans Eclipse 3.5: Réécriture import xsl/include emplacement dans les coulisses il validera correctement les fichiers
- 14. récursive CVS ajouter des fichiers/répertoires et ignorer les fichiers existants CVS
- 15. Directives de codage XAML
- 16. Emacs comment compléter automatiquement les mots des fichiers include sur C?
- 17. Comment rechercher et remplacer toutes les occurrences d'une chaîne de manière récursive dans une arborescence de répertoires?
- 18. Directives pour l'utilisation de IDictionary (.NET)
- 19. Est-il possible de faire une requête SQL récursive?
- 20. Est-il possible de lire les fichiers .eml dans .net
- 21. mise à jour de Subversion commad non récursive et écrasez les fichiers
- 22. C++ Analyse récursive de fichiers/répertoires en utilisant Cygwin
- 23. encodage de fichiers de changement osx (iconv) récursive
- 24. Comment puis-je migrer de manière non récursive des répertoires avec Perl ou shell?
- 25. Suppression récursive de fichiers et de répertoires en C#
- 26. Quelles sont les conventions pour les en-têtes et les fichiers cpp en C++?
- 27. Schéma pour les fichiers .vssettings?
- 28. Comment extraire tous les fichiers de projet VB6 de VSS?
- 29. Boost.Build meilleures pratiques Introduct une bibliothèque pré-construit au projet
- 30. NHAML Directives
Merci pour la réponse! Oui, il y a beaucoup d'autres systèmes de construction à choisir, mais mon problème n'est pas _which_ construire le système à utiliser, mais ce que j'ai manqué dans ma compréhension de Boost.Build. –