cmLocalVisualStudio7Generator: Adopt SourcesVisited lookup table
Move it up the hierarchy from `cmLocalVisualStudio10Generator`. Propagate contents from a target's dependencies as part of the main target iteration logic instead of as part of the generator-specific target generation.
This commit is contained in:
parent
aea465793e
commit
8bb5c96bf8
@ -68,13 +68,6 @@ cmLocalVisualStudio10Generator::~cmLocalVisualStudio10Generator()
|
||||
|
||||
void cmLocalVisualStudio10Generator::GenerateTarget(cmGeneratorTarget* target)
|
||||
{
|
||||
auto& targetVisited = this->GetSourcesVisited(target);
|
||||
auto& deps = this->GlobalGenerator->GetTargetDirectDepends(target);
|
||||
for (auto& d : deps) {
|
||||
// Take the union of visited source files of custom commands
|
||||
auto depVisited = this->GetSourcesVisited(d);
|
||||
targetVisited.insert(depVisited.begin(), depVisited.end());
|
||||
}
|
||||
if (static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator)
|
||||
->TargetIsFortranOnly(target)) {
|
||||
this->cmLocalVisualStudio7Generator::GenerateTarget(target);
|
||||
|
@ -28,19 +28,10 @@ public:
|
||||
void ReadAndStoreExternalGUID(const std::string& name,
|
||||
const char* path) override;
|
||||
|
||||
std::set<cmSourceFile const*>& GetSourcesVisited(
|
||||
cmGeneratorTarget const* target)
|
||||
{
|
||||
return SourcesVisited[target];
|
||||
};
|
||||
|
||||
protected:
|
||||
const char* ReportErrorLabel() const override;
|
||||
bool CustomCommandUseLocal() const override { return true; }
|
||||
|
||||
private:
|
||||
void GenerateTarget(cmGeneratorTarget* target) override;
|
||||
|
||||
std::map<cmGeneratorTarget const*, std::set<cmSourceFile const*>>
|
||||
SourcesVisited;
|
||||
};
|
||||
|
@ -86,6 +86,15 @@ void cmLocalVisualStudio7Generator::Generate()
|
||||
if (!gt->IsInBuildSystem() || gt->GetProperty("EXTERNAL_MSPROJECT")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto& gtVisited = this->GetSourcesVisited(gt);
|
||||
auto& deps = this->GlobalGenerator->GetTargetDirectDepends(gt);
|
||||
for (auto& d : deps) {
|
||||
// Take the union of visited source files of custom commands
|
||||
auto depVisited = this->GetSourcesVisited(d);
|
||||
gtVisited.insert(depVisited.begin(), depVisited.end());
|
||||
}
|
||||
|
||||
this->GenerateTarget(gt);
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,12 @@ public:
|
||||
virtual void ReadAndStoreExternalGUID(const std::string& name,
|
||||
const char* path);
|
||||
|
||||
std::set<cmSourceFile const*>& GetSourcesVisited(
|
||||
cmGeneratorTarget const* target)
|
||||
{
|
||||
return this->SourcesVisited[target];
|
||||
};
|
||||
|
||||
protected:
|
||||
virtual void GenerateTarget(cmGeneratorTarget* target);
|
||||
|
||||
@ -148,4 +154,7 @@ private:
|
||||
bool FortranProject;
|
||||
bool WindowsCEProject;
|
||||
std::unique_ptr<cmLocalVisualStudio7GeneratorInternals> Internal;
|
||||
|
||||
std::map<cmGeneratorTarget const*, std::set<cmSourceFile const*>>
|
||||
SourcesVisited;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user