Fix the tests for evaluating includes and defines.

We should also check whether the INTERFACE_ variant of a property
is being read, and in the case of the compile definitions, we should
test the _<CONFIG> suffixed variants. That is already available
through the use of the methods.

This way, we use the ALREADY_SEEN optimization when evaluating
the includes of a target in 'external' generator expressions, ie, those
used in a add_custom_command invokation, as opposed to evaluating the
INCLUDE_DIRECTORIES of a target itself via GetIncludeDirectories.
This commit is contained in:
Stephen Kelly 2013-02-18 10:42:00 +01:00
parent 98a672528d
commit 8dfdf1c734
2 changed files with 6 additions and 6 deletions

View File

@ -33,8 +33,8 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
}
this->CheckResult = this->checkGraph();
if (CheckResult == DAG && (top->Property == "INCLUDE_DIRECTORIES"
|| top->Property == "COMPILE_DEFINITIONS") )
if (CheckResult == DAG && (top->EvaluatingIncludeDirectories()
|| top->EvaluatingCompileDefinitions()))
{
std::map<cmStdString, std::set<cmStdString> >::const_iterator it
= top->Seen.find(target);

View File

@ -26,11 +26,11 @@ check(test_build_interface "build")
check(test_install_interface "")
check(test_target_name_1 "tgt,ok")
check(test_target_name_2 "tgt:ok")
check(test_target_includes1 "/empty1/public;/empty2/public;/empty3/public;/empty4/public;/empty4/public")
check(test_target_includes2 "/empty2/public;/empty3/public;/empty4/public;/empty4/public")
check(test_target_includes3 "/empty3/public;/empty2/public;/empty4/public;/empty4/public")
check(test_target_includes1 "/empty1/public;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes2 "/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes3 "/empty3/public;/empty2/public;/empty4/public")
check(test_target_includes4 "/empty1/public;/empty1/private;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes5 "/empty2/public;/empty3/public;/empty2/public;/empty4/public")
check(test_target_includes6 "/empty3/public;/empty3/private;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes7 "/empty1/public;/empty2/public;/empty3/public;/empty4/public;/empty4/public")
check(test_target_includes7 "/empty1/public;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes8 "/empty5/private1;/empty5/private2")