From 93c1acd8ffdd59e127b11a47e13bf058d9cfe43c Mon Sep 17 00:00:00 2001 From: Fred Baksik Date: Wed, 16 Mar 2022 16:25:21 -0400 Subject: GHS: List predefined targets before user targets in GUI --- Source/cmGlobalGhsMultiGenerator.cxx | 19 ++++++++++++++++--- 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 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); -- cgit v0.12