From a25bddb7fffcb0d6c36cfe3700cc7df596a29304 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 15 Mar 2012 17:35:28 +0000 Subject: [PATCH] Introjucer: fix for projects without an export target that can be launched on the current OS. --- .../Source/Project/jucer_Module.cpp | 29 +++++++++++++++---- .../Introjucer/Source/Project/jucer_Module.h | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/extras/Introjucer/Source/Project/jucer_Module.cpp b/extras/Introjucer/Source/Project/jucer_Module.cpp index 4dd6c3521f..09003e1346 100644 --- a/extras/Introjucer/Source/Project/jucer_Module.cpp +++ b/extras/Introjucer/Source/Project/jucer_Module.cpp @@ -98,22 +98,41 @@ File ModuleList::getModulesFolderForJuceOrModulesFolder (const File& f) return f; } +File ModuleList::getModulesFolderForExporter (const ProjectExporter& exporter) +{ + File f (exporter.getProject().resolveFilename (exporter.getJuceFolderString())); + f = getModulesFolderForJuceOrModulesFolder (f); + return f; +} + File ModuleList::getDefaultModulesFolder (Project* project) { if (project != nullptr) { - ScopedPointer exp (ProjectExporter::createPlatformDefaultExporter (*project)); - - if (exp != nullptr) { - File f (project->resolveFilename (exp->getJuceFolderString())); - f = getModulesFolderForJuceOrModulesFolder (f); + // Try the platform default exporter first.. + ScopedPointer exp (ProjectExporter::createPlatformDefaultExporter (*project)); + + if (exp != nullptr) + { + const File f (getModulesFolderForExporter (*exp)); + + if (ModuleList::isModulesFolder (f)) + return f; + } + } + + // If that didn't work, try all the other exporters.. + for (Project::ExporterIterator exporter (*project); exporter.next();) + { + const File f (getModulesFolderForExporter (*exporter)); if (ModuleList::isModulesFolder (f)) return f; } } + // Fall back to a default.. #if JUCE_WINDOWS return File::getSpecialLocation (File::userDocumentsDirectory) #else diff --git a/extras/Introjucer/Source/Project/jucer_Module.h b/extras/Introjucer/Source/Project/jucer_Module.h index 909a627ec6..b14a5e8570 100644 --- a/extras/Introjucer/Source/Project/jucer_Module.h +++ b/extras/Introjucer/Source/Project/jucer_Module.h @@ -133,6 +133,7 @@ public: static void setLocalModulesFolder (const File& newFile); static File getModulesFolderForJuceOrModulesFolder (const File& f); + static File getModulesFolderForExporter (const ProjectExporter&); StringArray getExtraDependenciesNeeded (Project&, const Module&);