1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-06-12 00:40:45 +08:00

GHS: List predefined targets before user targets in GUI

This commit is contained in:
Fred Baksik 2022-03-16 16:25:21 -04:00
parent bdb213819c
commit 93c1acd8ff
2 changed files with 17 additions and 4 deletions

View File

@ -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,8 +334,14 @@ void cmGlobalGhsMultiGenerator::WriteSubProjects(std::ostream& fout)
target->GetName() != this->GetInstallTargetName())) {
continue;
}
/* 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";
}
}
}
void cmGlobalGhsMultiGenerator::WriteProjectLine(
@ -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();
}

View File

@ -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);