Genex: Fix the HEAD target used for evaluated expressions
authorStephen Kelly <steveire@gmail.com>
Mon, 3 Jun 2013 21:53:29 +0000 (23:53 +0200)
committerBrad King <brad.king@kitware.com>
Wed, 5 Jun 2013 13:05:00 +0000 (09:05 -0400)
commit5b222354de7060af409d0d80aa06180ed1b3ac64
tree734190b0461bfc405c35b73c8dead770c29bc92b
parent3aa9ce441f010362e404e6f9126ecd3028de76b9
Genex: Fix the HEAD target used for evaluated expressions

If the expression $<TARGET_PROPERTY:prop> appears in the content
of a target property, the target that prop is read from is
the 'head target' of the expression. In contexts such as evaluating
the content of a target property during generation, such
as INCLUDE_DIRECTORIES, the 'head target' is the one on which the
initial request was made.

If evaluating a generator expression which is not a target property
content, the target must be explicitly specified. Such contexts
include add_custom_command and file(GENERATE). The content might
then look like

 $<TARGET_PROPERTY:tgt,prop>

However, as there is no HeadTarget set, any generator expressions
evaluated as part of reading prop from tgt which do not specify
the tgt directly report an error.

Modify the logic of the TARGET_PROPERTY generator expression so
that in such contexts, the 'head target' is set to the appropriate
target which was first encountered.
Source/cmGeneratorExpressionEvaluator.cxx
Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt
Tests/IncludeDirectories/TargetIncludeDirectories/other.cpp [new file with mode: 0644]