Utilisation scons je peux facilement mettre mes comprennent des chemins:Comment puis-je configurer le système de scons include_path
env.Append(CPPPATH=['foo'])
Ce passe le drapeau
-Ifoo
à gcc
Cependant, je suis en train compiler avec beaucoup d'avertissements activés. En particulier avec
env.Append(CPPFLAGS=['-Werror', '-Wall', '-Wextra'])
qui meurt horriblement sur certains boost comprend ... Je peux résoudre ce problème en ajoutant le coup de pouce au système inclut include_path plutôt que le chemin d'inclusion traite comme gcc système comprend différemment.
Alors ce que je dois faire passer à gcc au lieu de -Ifoo est
-isystem foo
Je suppose que je pourrais le faire avec la variable CPPFLAGS, mais me demandais s'il y avait une meilleure solution intégrée à scons.
Merci pour la confirmation de ce que j'attendais (mais j'espérais me tromper) –
Bonne réponse mais en fait, je crois que c'est une bonne chose que ces inclusions soient exclues de la chaîne de dépendance car elles ralentiraient le processus de construction gain réel. Il y a beaucoup d'en-têtes Boost et ceux-ci ne changeraient probablement pas (et quand ils le font, vous le savez et pouvez décider de tout nettoyer). – ereOn
En effet, exclure les en-têtes "en lecture seule" est un excellent moyen d'accélérer votre build. Une bonne pratique consiste à s'assurer que la version de la bibliothèque fait partie de son chemin d'accès au répertoire (par exemple, /foo/bar/boost/1.38/include). De cette façon, le numéro de version boost apparaît sur les lignes de commande de compilation. Étant donné que SCons inclut la ligne de commande dans sa signature, toute mise à niveau de boost se retrouvera dans un répertoire différent, invalidant ainsi tout produit de construction existant. Cela rend un cache de build beaucoup plus robuste, en particulier pour les grandes équipes. – BenG