diff options
author | Brad King <brad.king@kitware.com> | 2013-08-01 12:54:15 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2013-08-01 12:54:15 (GMT) |
commit | b341bf2178e3923636735ae1df53a33e5857df7d (patch) | |
tree | bc38c23e6590d2e5bfd4065e0fd18a08ba90b856 /Source/cmExportFileGenerator.cxx | |
parent | 1a88bbf3f06f0858cf6957d80623d43dcd323a22 (diff) | |
parent | 80e652f5cc279715ff57e1c64c6e5c460b201db4 (diff) | |
download | CMake-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.cxx | 28 |
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); |