summaryrefslogtreecommitdiffstats
path: root/Source/cmExportFileGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-08-01 12:54:15 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2013-08-01 12:54:15 (GMT)
commitb341bf2178e3923636735ae1df53a33e5857df7d (patch)
treebc38c23e6590d2e5bfd4065e0fd18a08ba90b856 /Source/cmExportFileGenerator.cxx
parent1a88bbf3f06f0858cf6957d80623d43dcd323a22 (diff)
parent80e652f5cc279715ff57e1c64c6e5c460b201db4 (diff)
downloadCMake-b341bf2178e3923636735ae1df53a33e5857df7d.zip
CMake-b341bf2178e3923636735ae1df53a33e5857df7d.tar.gz
CMake-b341bf2178e3923636735ae1df53a33e5857df7d.tar.bz2
Merge topic 'INCLUDES-DESTINATION-no-config'
80e652f Export: Process generator expressions from INCLUDES DESTINATION. 4355815 cmTarget: Add NAME property
Diffstat (limited to 'Source/cmExportFileGenerator.cxx')
-rw-r--r--Source/cmExportFileGenerator.cxx28
1 files changed, 25 insertions, 3 deletions
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index 5b351bc..ef336ea 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -287,11 +287,33 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface(
const char *propName = "INTERFACE_INCLUDE_DIRECTORIES";
const char *input = target->GetProperty(propName);
- if (!input && tei->InterfaceIncludeDirectories.empty())
+
+ cmListFileBacktrace lfbt;
+ cmGeneratorExpression ge(lfbt);
+
+ std::string dirs = tei->InterfaceIncludeDirectories;
+ this->ReplaceInstallPrefix(dirs);
+ cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(dirs);
+ std::string exportDirs = cge->Evaluate(target->GetMakefile(), 0,
+ false, target);
+
+ if (cge->GetHadContextSensitiveCondition())
+ {
+ cmMakefile* mf = target->GetMakefile();
+ cmOStringStream e;
+ e << "Target \"" << target->GetName() << "\" is installed with "
+ "INCLUDES DESTINATION set to a context sensitive path. Paths which "
+ "depend on the configuration, policy values or the link interface are "
+ "not supported. Consider using target_include_directories instead.";
+ mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+ return;
+ }
+
+ if (!input && exportDirs.empty())
{
return;
}
- if ((input && !*input) && tei->InterfaceIncludeDirectories.empty())
+ if ((input && !*input) && exportDirs.empty())
{
// Set to empty
properties[propName] = "";
@@ -300,7 +322,7 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface(
std::string includes = (input?input:"");
const char* sep = input ? ";" : "";
- includes += sep + tei->InterfaceIncludeDirectories;
+ includes += sep + exportDirs;
std::string prepro = cmGeneratorExpression::Preprocess(includes,
preprocessRule,
true);