SCons User Guide 0.96.1 | ||
---|---|---|
<<< Previous | Next >>> |
The BuildDir function now gives us everything we need to show how easy it is to create variant builds using SCons. Suppose, for example, that we want to build a program for both Windows and Linux platforms, but that we want to build it in a shared directory with separate side-by-side build directories for the Windows and Linux versions of the program.
platform = ARGUMENTS.get('OS', Platform()) include = "#export/$PLATFORM/include" lib = "#export/$PLATFORM/lib" bin = "#export/$PLATFORM/bin" env = Environment(PLATFORM = platform, BINDIR = bin, INCDIR = include, LIBDIR = lib, CPPPATH = [include], LIBPATH = [lib], LIBS = 'world') Export('env') env.SConscript('src/SConscript', build_dir='build/$PLATFORM') # #BuildDir("#build/$PLATFORM", 'src') #SConscript("build/$PLATFORM/hello/SConscript") #SConscript("build/$PLATFORM/world/SConscript") |
This SConstruct file, when run on a Linux system, yields:
% scons -Q OS=linux Install file: "build/linux/world/world.h" as "export/linux/include/world.h" cc -Iexport/linux/include -c -o build/linux/hello/hello.o build/linux/hello/hello.c cc -Iexport/linux/include -c -o build/linux/world/world.o build/linux/world/world.c ar r build/linux/world/libworld.a build/linux/world/world.o ranlib build/linux/world/libworld.a Install file: "build/linux/world/libworld.a" as "export/linux/lib/libworld.a" cc -o build/linux/hello/hello build/linux/hello/hello.o -Lexport/linux/lib -lworld Install file: "build/linux/hello/hello" as "export/linux/bin/hello" |
The same SConstruct file on Windows would build:
C:\>scons -Q OS=windows Install file: "build/windows/world/world.h" as "export/windows/include/world.h" cl /nologo /Iexport\windows\include /c build\windows\hello\hello.c /Fobuild\windows\hello\hello.obj cl /nologo /Iexport\windows\include /c build\windows\world\world.c /Fobuild\windows\world\world.obj lib /nologo /OUT:build\windows\world\world.lib build\windows\world\world.obj Install file: "build/windows/world/world.lib" as "export/windows/lib/world.lib" link /nologo /OUT:build\windows\hello\hello.exe /LIBPATH:export\windows\lib world.lib build\windows\hello\hello.obj Install file: "build/windows/hello/hello.exe" as "export/windows/bin/hello.exe" |
<<< Previous | Home | Next >>> |
Using BuildDir With an SConscript File | Writing Your Own Builders |