]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/tools/build/example/variant/readme.qbk
update sources to v12.2.3
[ceph.git] / ceph / src / boost / tools / build / example / variant / readme.qbk
1 [/
2 Copyright 2004 Vladimir Prus
3 Copyright 2017 Rene Rivera
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
6 /]
7
8 [section Build Variants]
9
10 This example shows how user can create his own build variants. Two variants are
11 defined: "crazy", which is just a random combination of properties, and
12 "super-release", which is inherited from "release", and differs by a single
13 define.
14
15 Files:
16
17 * [@../../example/variant/a.cpp a.cpp]
18 * [@../../example/variant/jamroot.jam jamroot.jam]
19 * [@../../example/variant/jamfile.jam jamfile.jam]
20 * [@../../example/variant/libs/jamfile.jam libs/jamfile.jam]
21 * [@../../example/variant/libs/l.cpp libs/l.cpp]
22
23 [import jamroot.jam]
24 [import jamfile.jam]
25 [import libs/jamfile.jam]
26
27 In this project the `jamroot.jam` specifies the custom build variants and the
28 targets are specified in the two `jamfile.jam` files.
29
30 [jamroot]
31
32 The top-level `jamfile.jam`:
33
34 [jamfile]
35
36 And the library `jamfile.jam` that the top-level `jamfile.jam` refers to:
37
38 [libs_jamfile]
39
40 Building the example yields:
41
42 [teletype]
43 ```
44 > cd /example/variant
45 > b2
46 ...found 20 targets...
47 ...updating 16 targets...
48 common.mkdir bin
49 common.mkdir bin/clang-darwin-4.2.1
50 common.mkdir bin/clang-darwin-4.2.1/crazy
51 clang-darwin.compile.c++ bin/clang-darwin-4.2.1/crazy/a.o
52 common.mkdir libs/bin
53 common.mkdir libs/bin/clang-darwin-4.2.1
54 common.mkdir libs/bin/clang-darwin-4.2.1/crazy
55 clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/crazy/l.o
56 clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/crazy/libl.dylib
57 clang-darwin.link bin/clang-darwin-4.2.1/crazy/a
58 common.mkdir bin/clang-darwin-4.2.1/super_release
59 clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
60 common.mkdir libs/bin/clang-darwin-4.2.1/super_release
61 clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
62 clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
63 clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
64 ...updated 16 targets...
65 ```
66
67 As specified in the top-level `jamfile.jam` both custom variants where built
68 by default. Once can override that by specifying the variant one wants to
69 build directly on the command line with a `variant=super_release`. Or just
70 with a `super_release` as variants can be referred to by their name only.
71 For example using that argument yields:
72
73 ```
74 > cd /example/variant
75 > b2 super_release
76 ...found 14 targets...
77 ...updating 10 targets...
78 common.mkdir bin
79 common.mkdir bin/clang-darwin-4.2.1
80 common.mkdir bin/clang-darwin-4.2.1/super_release
81 clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
82 common.mkdir libs/bin
83 common.mkdir libs/bin/clang-darwin-4.2.1
84 common.mkdir libs/bin/clang-darwin-4.2.1/super_release
85 clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
86 clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
87 clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
88 ...updated 10 targets...
89 ```
90
91 [note The actual paths in the `bin` sub-directory will depend on your
92 toolset.]
93
94 [endsect]