diff --git a/v2/doc/src/advanced.xml b/v2/doc/src/advanced.xml
index ac7fb615c..b6377858c 100644
--- a/v2/doc/src/advanced.xml
+++ b/v2/doc/src/advanced.xml
@@ -766,6 +766,34 @@ rule my-rule ( properties * )
requirements can be easier to write and understand.
+ Requirements explicitly specified for a target are usually
+ combined with the requirements specified for the containing project. You
+ can cause a target to completely ignore specific project's requirement
+ using the syntax by adding minus sign before a property, for example:
+
+exe main : main.cpp : -<define>UNNECESSARY_DEFINE ;
+
+ This syntax is the only way to ignore free properties from parent,
+ such as defines. It can be also useful for ordinary properties. Consider
+ this example:
+
+project test : requirements <threading;>multi ;
+exe test1 : test1.cpp ;
+exe test2 : test2.cpp : <threading;>single ;
+exe test3 : test3.cpp : -<threading;>multi ;
+
+ Here, test1 inherits project requirements and will always
+ be built in multi-threaded mode. The test2 target
+ overrides project's requirements and will
+ always be built in single-threaded mode. In contrast, the
+ test3 target removes a property
+ from project requirements and will be built either in single-threaded or
+ multi-threaded mode depending on which variant is requested by the
+ user.
+
+ Note that removing of requirements is completely textual:
+ you need to specify exactly the same property to remove it.
+
diff --git a/v2/doc/src/tasks.xml b/v2/doc/src/tasks.xml
index d92ec2ebf..f9e6e444f 100644
--- a/v2/doc/src/tasks.xml
+++ b/v2/doc/src/tasks.xml
@@ -458,6 +458,63 @@ actions echo
+
+
+