Browse Source

Projucer: Attempt to copy module paths from compatible exporter when adding new export target

v6.1.6
ed 3 years ago
parent
commit
1b2aeec65d
2 changed files with 29 additions and 27 deletions
  1. +3
    -0
      extras/Projucer/Source/Project/UI/jucer_ModulesInformationComponent.h
  2. +26
    -27
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp

+ 3
- 0
extras/Projucer/Source/Project/UI/jucer_ModulesInformationComponent.h View File

@@ -152,6 +152,9 @@ public:
for (Project::ExporterIterator exporter (project); exporter.next();) for (Project::ExporterIterator exporter (project); exporter.next();)
paths.addIfNotAlreadyThere (exporter->getPathForModuleString (moduleID).trim()); paths.addIfNotAlreadyThere (exporter->getPathForModuleString (moduleID).trim());
paths.removeEmptyStrings();
paths.removeDuplicates (true);
pathText = paths.joinIntoString (", "); pathText = paths.joinIntoString (", ");
} }


+ 26
- 27
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp View File

@@ -662,6 +662,11 @@ void ProjectExporter::updateOldModulePaths()
} }
} }
static bool areSameExporters (const ProjectExporter& p1, const ProjectExporter& p2)
{
return p1.getExporterIdentifier() == p2.getExporterIdentifier();
}
static bool areCompatibleExporters (const ProjectExporter& p1, const ProjectExporter& p2) static bool areCompatibleExporters (const ProjectExporter& p1, const ProjectExporter& p2)
{ {
return (p1.isVisualStudio() && p2.isVisualStudio()) return (p1.isVisualStudio() && p2.isVisualStudio())
@@ -673,39 +678,33 @@ static bool areCompatibleExporters (const ProjectExporter& p1, const ProjectExpo
void ProjectExporter::createDefaultModulePaths() void ProjectExporter::createDefaultModulePaths()
{ {
for (Project::ExporterIterator exporter (project); exporter.next();)
auto exporterToCopy = [this]() -> std::unique_ptr<ProjectExporter>
{ {
if (areCompatibleExporters (*this, *exporter))
{
for (int i = project.getEnabledModules().getNumModules(); --i >= 0;)
{
auto modID = project.getEnabledModules().getModuleID (i);
getPathForModuleValue (modID) = exporter->getPathForModuleValue (modID);
}
std::vector<std::unique_ptr<ProjectExporter>> exporters;
return;
}
}
for (Project::ExporterIterator exporter (project); exporter.next();)
exporters.push_back (std::move (exporter.exporter));
for (Project::ExporterIterator exporter (project); exporter.next();)
{
if (exporter->canLaunchProject())
auto getIf = [&exporters] (auto predicate)
{ {
for (int i = project.getEnabledModules().getNumModules(); --i >= 0;)
{
auto modID = project.getEnabledModules().getModuleID (i);
getPathForModuleValue (modID) = exporter->getPathForModuleValue (modID);
}
auto iter = std::find_if (exporters.begin(), exporters.end(), predicate);
return iter != exporters.end() ? std::move (*iter) : nullptr;
};
return;
}
}
if (auto exporter = getIf ([this] (auto& x) { return areSameExporters (*this, *x); }))
return exporter;
for (int i = project.getEnabledModules().getNumModules(); --i >= 0;)
{
auto modID = project.getEnabledModules().getModuleID (i);
getPathForModuleValue (modID) = "../../juce";
}
if (auto exporter = getIf ([this] (auto& x) { return areCompatibleExporters (*this, *x); }))
return exporter;
if (auto exporter = getIf ([] (auto& x) { return x->canLaunchProject(); }))
return exporter;
return {};
}();
for (const auto& modID : project.getEnabledModules().getAllModules())
getPathForModuleValue (modID) = (exporterToCopy != nullptr ? exporterToCopy->getPathForModuleString (modID) : "../../juce");
} }
//============================================================================== //==============================================================================


Loading…
Cancel
Save