diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index c69d484486..2c54077dc8 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -378,7 +378,8 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface( cmGeneratorExpression ge; std::string dirs = cmGeneratorExpression::Preprocess( - tei->InterfaceIncludeDirectories, preprocessRule, true); + cmJoin(target->Target->GetInstallIncludeDirectoriesEntries(), ";"), + preprocessRule, true); this->ReplaceInstallPrefix(dirs); std::unique_ptr cge = ge.Parse(dirs); std::string exportDirs = diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 79109b5082..687741b3da 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -36,6 +36,7 @@ #include "cmMessageType.h" #include "cmPolicies.h" #include "cmProperty.h" +#include "cmRange.h" #include "cmRuntimeDependencyArchive.h" #include "cmStateTypes.h" #include "cmStringAlgorithms.h" @@ -681,8 +682,8 @@ bool HandleTargetsMode(std::vector const& args, te->LibraryGenerator = libraryGenerator.get(); te->RuntimeGenerator = runtimeGenerator.get(); te->ObjectsGenerator = objectGenerator.get(); - te->InterfaceIncludeDirectories = - cmJoin(includesArgs.GetIncludeDirs(), ";"); + target.AddInstallIncludeDirectories( + cmMakeRange(includesArgs.GetIncludeDirs())); te->NamelinkOnly = namelinkOnly; helper.Makefile->GetGlobalGenerator() ->GetExportSets()[exports] diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 7622700515..70e11a2d01 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -189,6 +189,7 @@ public: std::map> LanguageStandardProperties; std::vector IncludeDirectoriesEntries; std::vector IncludeDirectoriesBacktraces; + std::vector InstallIncludeDirectoriesEntries; std::vector CompileOptionsEntries; std::vector CompileOptionsBacktraces; std::vector CompileFeaturesEntries; @@ -1075,6 +1076,17 @@ std::set const& cmTarget::GetSystemIncludeDirectories() const return this->impl->SystemIncludeDirectories; } +void cmTarget::AddInstallIncludeDirectories(cmStringRange const& incs) +{ + std::copy(incs.begin(), incs.end(), + std::back_inserter(this->impl->InstallIncludeDirectoriesEntries)); +} + +cmStringRange cmTarget::GetInstallIncludeDirectoriesEntries() const +{ + return cmMakeRange(this->impl->InstallIncludeDirectoriesEntries); +} + cmStringRange cmTarget::GetIncludeDirectoriesEntries() const { return cmMakeRange(this->impl->IncludeDirectoriesEntries); diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 30d9f5d067..29130c7bf3 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -237,6 +237,9 @@ public: void AddSystemIncludeDirectories(std::set const& incs); std::set const& GetSystemIncludeDirectories() const; + void AddInstallIncludeDirectories(cmStringRange const& incs); + cmStringRange GetInstallIncludeDirectoriesEntries() const; + BTs const* GetLanguageStandardProperty( const std::string& propertyName) const; diff --git a/Source/cmTargetExport.h b/Source/cmTargetExport.h index 1e38d84923..19fc9319ae 100644 --- a/Source/cmTargetExport.h +++ b/Source/cmTargetExport.h @@ -29,7 +29,6 @@ public: cmInstallTargetGenerator* FrameworkGenerator; cmInstallTargetGenerator* BundleGenerator; cmInstallFilesGenerator* HeaderGenerator; - std::string InterfaceIncludeDirectories; ///@} bool NamelinkOnly = false;