| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- [/
- Copyright 2004 Vladimir Prus
- Copyright 2017 Rene Rivera
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- /]
- [section Build Variants]
- This example shows how user can create his own build variants. Two variants are
- defined: "crazy", which is just a random combination of properties, and
- "super-release", which is inherited from "release", and differs by a single
- define.
- Files:
- * [@../../example/variant/a.cpp a.cpp]
- * [@../../example/variant/jamroot.jam jamroot.jam]
- * [@../../example/variant/jamfile.jam jamfile.jam]
- * [@../../example/variant/libs/jamfile.jam libs/jamfile.jam]
- * [@../../example/variant/libs/l.cpp libs/l.cpp]
- [import jamroot.jam]
- [import jamfile.jam]
- [import libs/jamfile.jam]
- In this project the `jamroot.jam` specifies the custom build variants and the
- targets are specified in the two `jamfile.jam` files.
- [jamroot]
- The top-level `jamfile.jam`:
- [jamfile]
- And the library `jamfile.jam` that the top-level `jamfile.jam` refers to:
- [libs_jamfile]
- Building the example yields:
- [teletype]
- ```
- > cd /example/variant
- > b2
- ...found 20 targets...
- ...updating 16 targets...
- common.mkdir bin
- common.mkdir bin/clang-darwin-4.2.1
- common.mkdir bin/clang-darwin-4.2.1/crazy
- clang-darwin.compile.c++ bin/clang-darwin-4.2.1/crazy/a.o
- common.mkdir libs/bin
- common.mkdir libs/bin/clang-darwin-4.2.1
- common.mkdir libs/bin/clang-darwin-4.2.1/crazy
- clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/crazy/l.o
- clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/crazy/libl.dylib
- clang-darwin.link bin/clang-darwin-4.2.1/crazy/a
- common.mkdir bin/clang-darwin-4.2.1/super_release
- clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
- common.mkdir libs/bin/clang-darwin-4.2.1/super_release
- clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
- clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
- clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
- ...updated 16 targets...
- ```
- As specified in the top-level `jamfile.jam` both custom variants where built
- by default. Once can override that by specifying the variant one wants to
- build directly on the command line with a `variant=super_release`. Or just
- with a `super_release` as variants can be referred to by their name only.
- For example using that argument yields:
- ```
- > cd /example/variant
- > b2 super_release
- ...found 14 targets...
- ...updating 10 targets...
- common.mkdir bin
- common.mkdir bin/clang-darwin-4.2.1
- common.mkdir bin/clang-darwin-4.2.1/super_release
- clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
- common.mkdir libs/bin
- common.mkdir libs/bin/clang-darwin-4.2.1
- common.mkdir libs/bin/clang-darwin-4.2.1/super_release
- clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
- clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
- clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
- ...updated 10 targets...
- ```
- [note The actual paths in the `bin` sub-directory will depend on your
- toolset.]
- [endsect]
|