mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Projucer: Attempt to copy module paths from compatible exporter when adding new export target
This commit is contained in:
parent
fdcdda3463
commit
1b2aeec65d
2 changed files with 29 additions and 27 deletions
|
|
@ -152,6 +152,9 @@ public:
|
|||
for (Project::ExporterIterator exporter (project); exporter.next();)
|
||||
paths.addIfNotAlreadyThere (exporter->getPathForModuleString (moduleID).trim());
|
||||
|
||||
paths.removeEmptyStrings();
|
||||
paths.removeDuplicates (true);
|
||||
|
||||
pathText = paths.joinIntoString (", ");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
return (p1.isVisualStudio() && p2.isVisualStudio())
|
||||
|
|
@ -673,39 +678,33 @@ static bool areCompatibleExporters (const ProjectExporter& p1, const ProjectExpo
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
std::vector<std::unique_ptr<ProjectExporter>> exporters;
|
||||
|
||||
for (Project::ExporterIterator exporter (project); exporter.next();)
|
||||
{
|
||||
if (exporter->canLaunchProject())
|
||||
{
|
||||
for (int i = project.getEnabledModules().getNumModules(); --i >= 0;)
|
||||
{
|
||||
auto modID = project.getEnabledModules().getModuleID (i);
|
||||
getPathForModuleValue (modID) = exporter->getPathForModuleValue (modID);
|
||||
}
|
||||
exporters.push_back (std::move (exporter.exporter));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = project.getEnabledModules().getNumModules(); --i >= 0;)
|
||||
auto getIf = [&exporters] (auto predicate)
|
||||
{
|
||||
auto modID = project.getEnabledModules().getModuleID (i);
|
||||
getPathForModuleValue (modID) = "../../juce";
|
||||
}
|
||||
auto iter = std::find_if (exporters.begin(), exporters.end(), predicate);
|
||||
return iter != exporters.end() ? std::move (*iter) : nullptr;
|
||||
};
|
||||
|
||||
if (auto exporter = getIf ([this] (auto& x) { return areSameExporters (*this, *x); }))
|
||||
return exporter;
|
||||
|
||||
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…
Add table
Add a link
Reference in a new issue