Refactor cmTargetExport removing InterfaceIncludeDirecories
Because of this property in the cmTargetExport struct, exporting targets is not uniform: top-level ones have to be dealt with via the cmTargetExport objects, while all linked ones are cmGeneratorTarget objects. Let's pass this additional includedirectories via a special target property making handling exported targets uniform.
This commit is contained in:
parent
26a76cf46d
commit
55e4753bbb
@ -378,7 +378,8 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface(
|
|||||||
cmGeneratorExpression ge;
|
cmGeneratorExpression ge;
|
||||||
|
|
||||||
std::string dirs = cmGeneratorExpression::Preprocess(
|
std::string dirs = cmGeneratorExpression::Preprocess(
|
||||||
tei->InterfaceIncludeDirectories, preprocessRule, true);
|
cmJoin(target->Target->GetInstallIncludeDirectoriesEntries(), ";"),
|
||||||
|
preprocessRule, true);
|
||||||
this->ReplaceInstallPrefix(dirs);
|
this->ReplaceInstallPrefix(dirs);
|
||||||
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(dirs);
|
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(dirs);
|
||||||
std::string exportDirs =
|
std::string exportDirs =
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "cmMessageType.h"
|
#include "cmMessageType.h"
|
||||||
#include "cmPolicies.h"
|
#include "cmPolicies.h"
|
||||||
#include "cmProperty.h"
|
#include "cmProperty.h"
|
||||||
|
#include "cmRange.h"
|
||||||
#include "cmRuntimeDependencyArchive.h"
|
#include "cmRuntimeDependencyArchive.h"
|
||||||
#include "cmStateTypes.h"
|
#include "cmStateTypes.h"
|
||||||
#include "cmStringAlgorithms.h"
|
#include "cmStringAlgorithms.h"
|
||||||
@ -681,8 +682,8 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
|||||||
te->LibraryGenerator = libraryGenerator.get();
|
te->LibraryGenerator = libraryGenerator.get();
|
||||||
te->RuntimeGenerator = runtimeGenerator.get();
|
te->RuntimeGenerator = runtimeGenerator.get();
|
||||||
te->ObjectsGenerator = objectGenerator.get();
|
te->ObjectsGenerator = objectGenerator.get();
|
||||||
te->InterfaceIncludeDirectories =
|
target.AddInstallIncludeDirectories(
|
||||||
cmJoin(includesArgs.GetIncludeDirs(), ";");
|
cmMakeRange(includesArgs.GetIncludeDirs()));
|
||||||
te->NamelinkOnly = namelinkOnly;
|
te->NamelinkOnly = namelinkOnly;
|
||||||
helper.Makefile->GetGlobalGenerator()
|
helper.Makefile->GetGlobalGenerator()
|
||||||
->GetExportSets()[exports]
|
->GetExportSets()[exports]
|
||||||
|
@ -189,6 +189,7 @@ public:
|
|||||||
std::map<std::string, BTs<std::string>> LanguageStandardProperties;
|
std::map<std::string, BTs<std::string>> LanguageStandardProperties;
|
||||||
std::vector<std::string> IncludeDirectoriesEntries;
|
std::vector<std::string> IncludeDirectoriesEntries;
|
||||||
std::vector<cmListFileBacktrace> IncludeDirectoriesBacktraces;
|
std::vector<cmListFileBacktrace> IncludeDirectoriesBacktraces;
|
||||||
|
std::vector<std::string> InstallIncludeDirectoriesEntries;
|
||||||
std::vector<std::string> CompileOptionsEntries;
|
std::vector<std::string> CompileOptionsEntries;
|
||||||
std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
|
std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
|
||||||
std::vector<std::string> CompileFeaturesEntries;
|
std::vector<std::string> CompileFeaturesEntries;
|
||||||
@ -1075,6 +1076,17 @@ std::set<std::string> const& cmTarget::GetSystemIncludeDirectories() const
|
|||||||
return this->impl->SystemIncludeDirectories;
|
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
|
cmStringRange cmTarget::GetIncludeDirectoriesEntries() const
|
||||||
{
|
{
|
||||||
return cmMakeRange(this->impl->IncludeDirectoriesEntries);
|
return cmMakeRange(this->impl->IncludeDirectoriesEntries);
|
||||||
|
@ -237,6 +237,9 @@ public:
|
|||||||
void AddSystemIncludeDirectories(std::set<std::string> const& incs);
|
void AddSystemIncludeDirectories(std::set<std::string> const& incs);
|
||||||
std::set<std::string> const& GetSystemIncludeDirectories() const;
|
std::set<std::string> const& GetSystemIncludeDirectories() const;
|
||||||
|
|
||||||
|
void AddInstallIncludeDirectories(cmStringRange const& incs);
|
||||||
|
cmStringRange GetInstallIncludeDirectoriesEntries() const;
|
||||||
|
|
||||||
BTs<std::string> const* GetLanguageStandardProperty(
|
BTs<std::string> const* GetLanguageStandardProperty(
|
||||||
const std::string& propertyName) const;
|
const std::string& propertyName) const;
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@ public:
|
|||||||
cmInstallTargetGenerator* FrameworkGenerator;
|
cmInstallTargetGenerator* FrameworkGenerator;
|
||||||
cmInstallTargetGenerator* BundleGenerator;
|
cmInstallTargetGenerator* BundleGenerator;
|
||||||
cmInstallFilesGenerator* HeaderGenerator;
|
cmInstallFilesGenerator* HeaderGenerator;
|
||||||
std::string InterfaceIncludeDirectories;
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
bool NamelinkOnly = false;
|
bool NamelinkOnly = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user