diff --git a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp index 1f0e62be66..9f55e12d6d 100644 --- a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp +++ b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp @@ -304,24 +304,31 @@ private: String getGlobalDefs() { - StringArray defs; - - defs.add (project.getCompileEngineSettings().getExtraPreprocessorDefsString()); - + auto mergeDefs = [] (const StringPairArray& inDefs) -> String { - auto projectDefines = project.getPreprocessorDefs(); + StringArray outDefs; - for (int i = 0; i < projectDefines.size(); ++i) + for (int i = 0; i < inDefs.size(); ++i) { - auto def = projectDefines.getAllKeys()[i]; - auto value = projectDefines.getAllValues()[i]; + auto def = inDefs.getAllKeys()[i]; + auto value = inDefs.getAllValues()[i]; if (value.isNotEmpty()) def << "=" << value; - defs.add (def); + outDefs.add (def); } - } + + return outDefs.joinIntoString (" "); + }; + + StringArray defs; + + if (! project.shouldUseAppConfig()) + defs.add (mergeDefs (project.getAppConfigDefs())); + + defs.add (project.getCompileEngineSettings().getExtraPreprocessorDefsString()); + defs.add (mergeDefs (project.getPreprocessorDefs())); for (Project::ExporterIterator exporter (project); exporter.next();) if (exporter->canLaunchProject()) diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index f6061cd65c..df978f7957 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -2425,6 +2425,49 @@ String Project::getFileTemplate (const String& templateName) } +StringPairArray Project::getAppConfigDefs() +{ + StringPairArray result; + result.set ("JUCE_DISPLAY_SPLASH_SCREEN", shouldDisplaySplashScreen() ? "1" : "0"); + result.set ("JUCE_USE_DARK_SPLASH_SCREEN", getSplashScreenColourString() == "Dark" ? "1" : "0"); + result.set ("JUCE_PROJUCER_VERSION", "0x" + String::toHexString (ProjectInfo::versionNumber)); + + OwnedArray modules; + getEnabledModules().createRequiredModules (modules); + + for (auto& m : modules) + result.set ("JUCE_MODULE_AVAILABLE_" + m->getID(), "1"); + + result.set ("JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED", "1"); + + for (auto& m : modules) + { + OwnedArray flags; + m->getConfigFlags (*this, flags); + + for (auto* flag : flags) + if (! flag->value.isUsingDefault()) + result.set (flag->symbol, flag->value.get() ? "1" : "0"); + } + + result.addArray (getAudioPluginFlags()); + + const auto& type = getProjectType(); + const auto isStandaloneApplication = (! type.isAudioPlugin() && ! type.isDynamicLibrary()); + + const auto standaloneValue = [&] + { + if (result.containsKey ("JucePlugin_Name") && result.containsKey ("JucePlugin_Build_Standalone")) + return "JucePlugin_Build_Standalone"; + + return isStandaloneApplication ? "1" : "0"; + }(); + + result.set ("JUCE_STANDALONE_APPLICATION", standaloneValue); + + return result; +} + StringPairArray Project::getAudioPluginFlags() const { if (! isAudioPluginProject()) diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 639ad00338..f8dce5404f 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -310,6 +310,7 @@ public: //============================================================================== void updateDeprecatedProjectSettingsInteractively(); + StringPairArray getAppConfigDefs(); StringPairArray getAudioPluginFlags() const; //============================================================================== diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp index 84b72ae407..b00431226f 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp @@ -448,54 +448,11 @@ StringPairArray ProjectExporter::getAllPreprocessorDefs (const BuildConfiguratio addTargetSpecificPreprocessorDefs (defs, targetType); if (! project.shouldUseAppConfig()) - defs = mergePreprocessorDefs (defs, getAppConfigDefs()); + defs = mergePreprocessorDefs (defs, project.getAppConfigDefs()); return defs; } -StringPairArray ProjectExporter::getAppConfigDefs() const -{ - StringPairArray result; - result.set ("JUCE_DISPLAY_SPLASH_SCREEN", project.shouldDisplaySplashScreen() ? "1" : "0"); - result.set ("JUCE_USE_DARK_SPLASH_SCREEN", project.getSplashScreenColourString() == "Dark" ? "1" : "0"); - result.set ("JUCE_PROJUCER_VERSION", "0x" + String::toHexString (ProjectInfo::versionNumber)); - - OwnedArray modules; - project.getEnabledModules().createRequiredModules (modules); - - for (auto& m : modules) - result.set ("JUCE_MODULE_AVAILABLE_" + m->getID(), "1"); - - result.set ("JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED", "1"); - - for (auto& m : modules) - { - OwnedArray flags; - m->getConfigFlags (project, flags); - - for (auto* flag : flags) - if (! flag->value.isUsingDefault()) - result.set (flag->symbol, flag->value.get() ? "1" : "0"); - } - - result.addArray (project.getAudioPluginFlags()); - - const auto& type = project.getProjectType(); - const auto isStandaloneApplication = (! type.isAudioPlugin() && ! type.isDynamicLibrary()); - - const auto standaloneValue = [&] - { - if (result.containsKey ("JucePlugin_Name") && result.containsKey ("JucePlugin_Build_Standalone")) - return "JucePlugin_Build_Standalone"; - - return isStandaloneApplication ? "1" : "0"; - }(); - - result.set ("JUCE_STANDALONE_APPLICATION", standaloneValue); - - return result; -} - StringPairArray ProjectExporter::getAllPreprocessorDefs() const { auto defs = mergePreprocessorDefs (project.getPreprocessorDefs(), diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h index 8c49c45c84..fe9d786be1 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h @@ -329,8 +329,6 @@ public: StringPairArray getAllPreprocessorDefs (const BuildConfiguration& config, const build_tools::ProjectType::Target::Type targetType) const; // includes exporter + project defs StringPairArray getAllPreprocessorDefs() const; - // just appconfig defs - StringPairArray getAppConfigDefs() const; void addTargetSpecificPreprocessorDefs (StringPairArray& defs, const build_tools::ProjectType::Target::Type targetType) const;