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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top