diff options
-rw-r--r-- | Source/cmGlobalGhsMultiGenerator.cxx | 19 | ||||
-rw-r--r-- | Source/cmGlobalGhsMultiGenerator.h | 2 |
2 files changed, 17 insertions, 4 deletions
diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 1db4160..f405a04 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -317,8 +317,14 @@ void cmGlobalGhsMultiGenerator::WriteTopLevelProject(std::ostream& fout, } } -void cmGlobalGhsMultiGenerator::WriteSubProjects(std::ostream& fout) +void cmGlobalGhsMultiGenerator::WriteSubProjects(std::ostream& fout, + bool filterPredefined) { + std::set<std::string> predefinedTargets; + predefinedTargets.insert(this->GetInstallTargetName()); + predefinedTargets.insert(this->GetAllTargetName()); + predefinedTargets.insert(std::string(CHECK_BUILD_SYSTEM_TARGET)); + // All known targets for (cmGeneratorTarget const* target : this->ProjectTargets) { if (target->GetType() == cmStateEnums::INTERFACE_LIBRARY || @@ -328,7 +334,13 @@ void cmGlobalGhsMultiGenerator::WriteSubProjects(std::ostream& fout) target->GetName() != this->GetInstallTargetName())) { continue; } - fout << target->GetName() + ".tgt" + FILE_EXTENSION << " [Project]\n"; + /* Check if the current target is a predefined CMake target */ + bool predefinedTarget = + predefinedTargets.find(target->GetName()) != predefinedTargets.end(); + if ((filterPredefined && predefinedTarget) || + (!filterPredefined && !predefinedTarget)) { + fout << target->GetName() + ".tgt" + FILE_EXTENSION << " [Project]\n"; + } } } @@ -454,7 +466,8 @@ void cmGlobalGhsMultiGenerator::OutputTopLevelProject( top.SetCopyIfDifferent(true); this->WriteTopLevelProject(top, root); this->WriteTargets(root); - this->WriteSubProjects(top); + this->WriteSubProjects(top, true); + this->WriteSubProjects(top, false); top.Close(); } diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h index e8fe6f8..aa68d3b 100644 --- a/Source/cmGlobalGhsMultiGenerator.h +++ b/Source/cmGlobalGhsMultiGenerator.h @@ -101,7 +101,7 @@ private: void WriteTopLevelProject(std::ostream& fout, cmLocalGenerator* root); void WriteMacros(std::ostream& fout, cmLocalGenerator* root); void WriteHighLevelDirectives(std::ostream& fout, cmLocalGenerator* root); - void WriteSubProjects(std::ostream& fout); + void WriteSubProjects(std::ostream& fout, bool filterPredefined); void WriteTargets(cmLocalGenerator* root); void WriteProjectLine(std::ostream& fout, cmGeneratorTarget const* target, std::string& rootBinaryDir); |