readme.qbk 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. [section Build Variants]
  8. This example shows how user can create his own build variants. Two variants are
  9. defined: "crazy", which is just a random combination of properties, and
  10. "super-release", which is inherited from "release", and differs by a single
  11. define.
  12. Files:
  13. * [@../../example/variant/a.cpp a.cpp]
  14. * [@../../example/variant/jamroot.jam jamroot.jam]
  15. * [@../../example/variant/jamfile.jam jamfile.jam]
  16. * [@../../example/variant/libs/jamfile.jam libs/jamfile.jam]
  17. * [@../../example/variant/libs/l.cpp libs/l.cpp]
  18. [import jamroot.jam]
  19. [import jamfile.jam]
  20. [import libs/jamfile.jam]
  21. In this project the `jamroot.jam` specifies the custom build variants and the
  22. targets are specified in the two `jamfile.jam` files.
  23. [jamroot]
  24. The top-level `jamfile.jam`:
  25. [jamfile]
  26. And the library `jamfile.jam` that the top-level `jamfile.jam` refers to:
  27. [libs_jamfile]
  28. Building the example yields:
  29. [teletype]
  30. ```
  31. > cd /example/variant
  32. > b2
  33. ...found 20 targets...
  34. ...updating 16 targets...
  35. common.mkdir bin
  36. common.mkdir bin/clang-darwin-4.2.1
  37. common.mkdir bin/clang-darwin-4.2.1/crazy
  38. clang-darwin.compile.c++ bin/clang-darwin-4.2.1/crazy/a.o
  39. common.mkdir libs/bin
  40. common.mkdir libs/bin/clang-darwin-4.2.1
  41. common.mkdir libs/bin/clang-darwin-4.2.1/crazy
  42. clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/crazy/l.o
  43. clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/crazy/libl.dylib
  44. clang-darwin.link bin/clang-darwin-4.2.1/crazy/a
  45. common.mkdir bin/clang-darwin-4.2.1/super_release
  46. clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
  47. common.mkdir libs/bin/clang-darwin-4.2.1/super_release
  48. clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
  49. clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
  50. clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
  51. ...updated 16 targets...
  52. ```
  53. As specified in the top-level `jamfile.jam` both custom variants where built
  54. by default. Once can override that by specifying the variant one wants to
  55. build directly on the command line with a `variant=super_release`. Or just
  56. with a `super_release` as variants can be referred to by their name only.
  57. For example using that argument yields:
  58. ```
  59. > cd /example/variant
  60. > b2 super_release
  61. ...found 14 targets...
  62. ...updating 10 targets...
  63. common.mkdir bin
  64. common.mkdir bin/clang-darwin-4.2.1
  65. common.mkdir bin/clang-darwin-4.2.1/super_release
  66. clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
  67. common.mkdir libs/bin
  68. common.mkdir libs/bin/clang-darwin-4.2.1
  69. common.mkdir libs/bin/clang-darwin-4.2.1/super_release
  70. clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
  71. clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
  72. clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
  73. ...updated 10 targets...
  74. ```
  75. [note The actual paths in the `bin` sub-directory will depend on your
  76. toolset.]
  77. [endsect]