diff --git a/boost_build_v2.html b/boost_build_v2.html index 447140833..0bae4791f 100644 --- a/boost_build_v2.html +++ b/boost_build_v2.html @@ -22,12 +22,12 @@ div.alert { color: red } table { align: center; border: thin; } - + + - build request, build request expansion and directly requested targets + - conditional properties + -->
It is slighly better way is to copy new/user-config.jam
+ into one of the locations where it can be found (given in this table). This prevent you from
+ accidentally overwriting your config when updating.bjam there. A simple application will be built. You can also
play with other projects in examples-v2.
+ it somewhere.
+
+
The build request can originate in many ways: It may come directly +
The build request can originate in many ways: it may come directly from the user's command-line, from a dependency of a main target upon a library, or from a dependency of a target upon an executable used to build that target, for example. For each way, there are different rules - whether we can use a given subvariant or not. However we currently only - assume linking and therefore use a simple approach described in the - following paragraph.
- -In general, there are many possible situations: a libary which is - dependency of a main target and should be linked into it, target which is - directly requested on the command line, or build executable which is used - in the build process itself. At this moment we use a simple approach.
+ whether we can use a given subvariant or not. The current rules are + described below.Two property sets are called link-compatible when targets with those property sets can be used interchangably. In turn, two property sets are link compatible when there's no link-incompatible - feature which has different values in those property sets. Whenever - requested and actual properties are link-compatible, it's OK. Otherwise, - it's an error.
+ feature which has different values in those property sets. + +When building of a main target is requested from a command line or + some project, link-compatibility is not considered. When building is + requested by other main target, via sources or dependency properties, the + requested and actual property sets must be link-compatible, otherwise a + warning is produced.
+ +Rationale:Link-compatibility is not considered when main target + is requested by a project, because it causes problems in practice. For + example, some parts of a project might be single-threaded, while others + — multi-threaded. They are not link-compatible, but they are not + linked, either. So, there's no need to issue error or warning. The errors + used to be generated, and only caused problems.