diff --git a/boost_build_v2.html b/boost_build_v2.html index 557045981..9d3356929 100644 --- a/boost_build_v2.html +++ b/boost_build_v2.html @@ -61,6 +61,9 @@
TODO: give a name and describe the property set joined with slashes. I + use the term "property path" somewhere below.
+Source location specifies directory where sources for the @@ -269,7 +272,7 @@
There are two kinds of project relationships.
+There are three kinds of project relationships.
First is parent-child. This relationship is established implicitly: parent directories of a project are searched, and the first found Jamfile @@ -280,22 +283,99 @@ build other projects. Those project need not be child projects. The build-project rule is used for that:
- build-project src ; + build-project src ; ++ +
The third kind is the 'use' relationship. In means that one project + uses targets from another. It is possible to just refer to target in + other projects using target id. However, if target id uses project id, it + is required that the project id is known. The use-project rule + is employed to guarantee that.
+
+ use-project ( id : location )
+ It loads the project at the specified location, which makes its project
+ id available in the project which invokes the rule. It is required that
+ the id parameter passed to the use-project rule be
+ equal to the id that the loaded project declared. At this moment, the
+ id paremeter should be absolute project id.
Main target is a named entity which can be build, for example + a named executable file. To declare a main target, user invokes some of + the main target rules, passing it things + like list of source and requirement.
+ +It is possible to have different list of sources for different + toolsets, therefore it is possible to invoce main target rules several + times for a single main target. For example:
++ exe a.exe : a_gcc.cpp : <toolset> ; + exe a.exe : a.cpp ; ++ Each call to the 'exe' rule defines a new main target + alternative for the main target a.exe. In this case, the + first alternative will be used for the gcc toolset, while the + second alternative will be used in other cases. TODO: document the exact + selection method under "Build process" below. +
Target identifier is used to denote a target.
+Target identifier is used to denote a target. It is described by the + following grammar:
++ target-id -> project-reference local-target-name + project-reference -> [jamfile-location] [ "@" [project-id] ] + jamfile-location -> pathname + project-id -> pathname + local-target-name -> identifier ++ For example, valid target ids might be: +
+ a + lib/b + @/boost/thread + /home/ghost/build/lr_library@parser/lalr1 ++ To map the target id into target, the project where that target is + contained is first found: -
Target reference is used to refer to a target, and may additionally - specify desired properties for that target.
+Simplified target reference has the same form as pathname, for example +
Target reference is used to specify a source target, and may + additionally specify desired properties for that target. It has this + syntax:
++ target-reference -> target-id [ "/" requested-properties ] + requested-properties -> property-path ++ For example, +
+ exe compiler : compiler.cpp libs/cmdline/<optimization>space ; ++ would cause the version of cmdline library, optimized to space, + to be linked in even if the compile executable is build with + speed optimization. + +
Target reference may have the same form as a pathname, for example lib/a. In order to determine if this is target reference or pathname, it is checked if there's a jamfile in the specified path. If there is one, it is loaded and if the specified target is declared by diff --git a/v2/boost_build_v2.html b/v2/boost_build_v2.html index 557045981..9d3356929 100644 --- a/v2/boost_build_v2.html +++ b/v2/boost_build_v2.html @@ -61,6 +61,9 @@
TODO: give a name and describe the property set joined with slashes. I + use the term "property path" somewhere below.
+Source location specifies directory where sources for the @@ -269,7 +272,7 @@
There are two kinds of project relationships.
+There are three kinds of project relationships.
First is parent-child. This relationship is established implicitly: parent directories of a project are searched, and the first found Jamfile @@ -280,22 +283,99 @@ build other projects. Those project need not be child projects. The build-project rule is used for that:
- build-project src ; + build-project src ; ++ +
The third kind is the 'use' relationship. In means that one project + uses targets from another. It is possible to just refer to target in + other projects using target id. However, if target id uses project id, it + is required that the project id is known. The use-project rule + is employed to guarantee that.
+
+ use-project ( id : location )
+ It loads the project at the specified location, which makes its project
+ id available in the project which invokes the rule. It is required that
+ the id parameter passed to the use-project rule be
+ equal to the id that the loaded project declared. At this moment, the
+ id paremeter should be absolute project id.
Main target is a named entity which can be build, for example + a named executable file. To declare a main target, user invokes some of + the main target rules, passing it things + like list of source and requirement.
+ +It is possible to have different list of sources for different + toolsets, therefore it is possible to invoce main target rules several + times for a single main target. For example:
++ exe a.exe : a_gcc.cpp : <toolset> ; + exe a.exe : a.cpp ; ++ Each call to the 'exe' rule defines a new main target + alternative for the main target a.exe. In this case, the + first alternative will be used for the gcc toolset, while the + second alternative will be used in other cases. TODO: document the exact + selection method under "Build process" below. +
Target identifier is used to denote a target.
+Target identifier is used to denote a target. It is described by the + following grammar:
++ target-id -> project-reference local-target-name + project-reference -> [jamfile-location] [ "@" [project-id] ] + jamfile-location -> pathname + project-id -> pathname + local-target-name -> identifier ++ For example, valid target ids might be: +
+ a + lib/b + @/boost/thread + /home/ghost/build/lr_library@parser/lalr1 ++ To map the target id into target, the project where that target is + contained is first found: -
Target reference is used to refer to a target, and may additionally - specify desired properties for that target.
+Simplified target reference has the same form as pathname, for example +
Target reference is used to specify a source target, and may + additionally specify desired properties for that target. It has this + syntax:
++ target-reference -> target-id [ "/" requested-properties ] + requested-properties -> property-path ++ For example, +
+ exe compiler : compiler.cpp libs/cmdline/<optimization>space ; ++ would cause the version of cmdline library, optimized to space, + to be linked in even if the compile executable is build with + speed optimization. + +
Target reference may have the same form as a pathname, for example lib/a. In order to determine if this is target reference or pathname, it is checked if there's a jamfile in the specified path. If there is one, it is loaded and if the specified target is declared by