Wie mit scons einen aus Quelle bauen zu tun?
-
21-09-2019 - |
Frage
Ich habe mit cmake meiner Projekte aus Quelle zu bauen, die wirklich praktisch ist, wie Sie Ihr Quellverzeichnis mit unnötigen Dateien verschmutzen vermeiden.
Unter der Annahme, die CMakeLists.txt wird im aktuellen Verzeichnis, das geschehen könnte wie folgt:
mkdir build
cd build
cmake ..
make
Wie kann ich das gleiche tun in scons?
Lösung
In Ihrer SConstruct
Datei verwenden Sie eine Variante dir:
SConscript("main.scons", variant_dir="build", duplicate=0)
Dann in main.scons
Sie alles wie gewohnt ein:
env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))
Es ist möglich, dies zu tun, ohne hartzucodieren die Variante dir in die SConstruct von (ab) mit Repositories, aber dieser Ansatz hat seine Fehler. Für die Aufzeichnung laufen würde man die oben wie folgt zu bauen in einem anderen Verzeichnis:
mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons
Die einfachste und bearbeitbar ist nur Gebrauch variant_dir
. Sie dann diese wie gewohnt von dem obersten Ebene Quellverzeichnis ausgeführt werden. Alle die Build-Artefakte erhalten im build
Unterverzeichnis erzeugt.
Als Reaktion auf JesperE 's Kommentar, hier ist, wie Sie den Top-Level-SConstruct schreiben könnten einen gegebenenfalls den Namen hinzufügen Build-Verzeichnis:
AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)
Dann würden Sie dies über die Befehlszeile wie folgt aufrufen, ein Build-Verzeichnis erstellen namens „baz“:
$ scons --build=baz