Mit scons schließe ich meine leicht Pfade umfassen einstellen:Wie stelle ich scons Systempfad
env.Append(CPPPATH=['foo'])
Das unter der Flagge geht
-Ifoo
jedoch gcc Ich versuche, Kompilieren mit vielen Warnungen aktiviert. Insbesondere mit
env.Append(CPPFLAGS=['-Werror', '-Wall', '-Wextra'])
, die schrecklich an bestimmten Schub enthält stirbt ... Ich kann dieses Problem beheben, indem Sie die Boost-Zugabe enthält zu dem System gehören Pfad anstelle der Include-Pfad als gcc behandelt System anders enthält.
Also, was ich brauche statt -Ifoo zu gcc zu bekommen, ist
-isystem foo
Ich glaube, ich dies mit der variablen CPPFLAGS tun könnten, aber frage mich, ob es eine bessere Lösung in scons gebaut war.
Danke für die Bestätigung dessen, was ich erwartete (aber gehofft hatte, war falsch) –
Gute Antwort, aber ich glaube, es ist eine gute Sache, dass diese Includes aus der Abhängigkeits-Kette ausgeschlossen sind, da sie den gesamten Build-Prozess für Nein verlangsamen würden echter Gewinn. Es gibt viele Boost-Header und diese würden sich wahrscheinlich nicht ändern (und wenn sie es tun, wissen Sie es und können entscheiden, alles zu bereinigen). – ereOn
In der Tat ist das Ausschließen von "Nur-Lese" -Kopfzeilen eine großartige Möglichkeit, um Ihren Build zu beschleunigen. Es empfiehlt sich, sicherzustellen, dass die Bibliotheksversion Teil des Verzeichnispfads ist (z. B. /foo/bar/boost/1.38/include). Auf diese Weise wird die Boost-Versionsnummer in den Kompilierbefehlszeilen angezeigt. Da SCons die Befehlszeile in seiner Signatur enthält, würde jedes Boost-Upgrade in einem anderen Verzeichnis landen, wodurch jedes vorhandene Build-Produkt ungültig wird. Dies macht einen Build-Cache viel robuster, besonders für große Teams. – BenG