From 84fbf5d2ca3645f52998cfbfa4889db4b08285b1 Mon Sep 17 00:00:00 2001
From: Vladimir Prus 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. 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.bjam there. A simple application will be built. You can also
play with other projects in examples-v2.
+ it somewhere.
+
+
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.