From 32789aec6cf828e6663ac4e4d43239bf916d67c3 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 20 Mar 2018 13:00:04 +0000 Subject: [PATCH] Projucer: Added getJUCEModules() and getJUCEExporters() methods to MiscUtilities and use getTargetFolderForExporter() for setting exporter's target locations --- .../jucer_ProjectExport_Android.h | 2 +- .../ProjectSaving/jucer_ProjectExport_CLion.h | 2 +- .../jucer_ProjectExport_CodeBlocks.h | 13 +----- .../ProjectSaving/jucer_ProjectExport_MSVC.h | 8 ++-- .../ProjectSaving/jucer_ProjectExport_Make.h | 2 +- .../ProjectSaving/jucer_ProjectExport_Xcode.h | 2 +- .../Utility/Helpers/jucer_MiscUtilities.cpp | 41 ++++++++++++++++--- .../Utility/Helpers/jucer_MiscUtilities.h | 3 ++ 8 files changed, 47 insertions(+), 26 deletions(-) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index a3575883dd..fc4a1048d3 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -149,7 +149,7 @@ public: { name = getName(); - targetLocationValue.setDefault (getDefaultBuildsRootFolder() + "Android"); + targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderForExporter (getValueTreeTypeName())); } //============================================================================== diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h index 9bea808114..be3fc51f61 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h @@ -74,7 +74,7 @@ public: { name = getName(); - targetLocationValue.setDefault (getDefaultBuildsRootFolder() + "CLion"); + targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderForExporter (getValueTreeTypeName())); } //============================================================================== diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h index f0d59a5183..f3ddb32476 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h @@ -62,17 +62,6 @@ public: return "CODEBLOCKS_UNKNOWN_OS"; } - //============================================================================== - static String getTargetFolderName (CodeBlocksOS os) - { - if (os == windowsTarget) return "CodeBlocksWindows"; - if (os == linuxTarget) return "CodeBlocksLinux"; - - // currently no other OSes supported by Codeblocks exporter! - jassertfalse; - return "CodeBlocksUnknownOS"; - } - //============================================================================== static CodeBlocksProjectExporter* createForSettings (Project& project, const ValueTree& settings) { @@ -93,7 +82,7 @@ public: { name = getName (os); - targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderName (os)); + targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderForExporter (getValueTreeTypeName (os))); if (isWindows()) targetPlatformValue.referTo (settings, Ids::codeBlocksWindowsTarget, getUndoManager()); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index e8033ded7b..fdcce766ae 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -31,7 +31,7 @@ class MSVCProjectExporterBase : public ProjectExporter { public: - MSVCProjectExporterBase (Project& p, const ValueTree& t, const char* const folderName) + MSVCProjectExporterBase (Project& p, const ValueTree& t, String folderName) : ProjectExporter (p, t), IPPLibraryValue (settings, Ids::IPPLibrary, getUndoManager()), platformToolsetValue (settings, Ids::toolset, getUndoManager()), @@ -1810,7 +1810,7 @@ class MSVCProjectExporterVC2013 : public MSVCProjectExporterBase { public: MSVCProjectExporterVC2013 (Project& p, const ValueTree& t) - : MSVCProjectExporterBase (p, t, "VisualStudio2013") + : MSVCProjectExporterBase (p, t, getTargetFolderForExporter (getValueTreeTypeName())) { name = getName(); @@ -1856,7 +1856,7 @@ class MSVCProjectExporterVC2015 : public MSVCProjectExporterBase { public: MSVCProjectExporterVC2015 (Project& p, const ValueTree& t) - : MSVCProjectExporterBase (p, t, "VisualStudio2015") + : MSVCProjectExporterBase (p, t, getTargetFolderForExporter (getValueTreeTypeName())) { name = getName(); @@ -1901,7 +1901,7 @@ class MSVCProjectExporterVC2017 : public MSVCProjectExporterBase { public: MSVCProjectExporterVC2017 (Project& p, const ValueTree& t) - : MSVCProjectExporterBase (p, t, "VisualStudio2017") + : MSVCProjectExporterBase (p, t, getTargetFolderForExporter (getValueTreeTypeName())) { name = getName(); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index e4e42251c4..fac1deb3da 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -328,7 +328,7 @@ public: { name = getNameLinux(); - targetLocationValue.setDefault (getDefaultBuildsRootFolder() + "LinuxMakefile"); + targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderForExporter (getValueTreeTypeName())); } //============================================================================== diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 0b29b1a299..35db37ba2e 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -89,7 +89,7 @@ public: { name = iOS ? getNameiOS() : getNameMac(); - targetLocationValue.setDefault (getDefaultBuildsRootFolder() + (iOS ? "iOS" : "MacOSX")); + targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderForExporter (getValueTreeTypeName (isIOS))); } static XcodeProjectExporter* createForSettings (Project& project, const ValueTree& settings) diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.cpp b/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.cpp index 7ce54585ad..629aeaf283 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.cpp +++ b/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.cpp @@ -292,7 +292,7 @@ bool fileNeedsCppSyntaxHighlighting (const File& file) } //============================================================================== -bool isJUCEModule (const String& moduleID) noexcept +StringArray getJUCEModules() noexcept { static StringArray juceModuleIds = { @@ -319,12 +319,12 @@ bool isJUCEModule (const String& moduleID) noexcept "juce_video" }; - return juceModuleIds.contains (moduleID); + return juceModuleIds; } -bool isValidExporterName (const String& exporterName) noexcept +StringArray getJUCEExporters (bool lowerCase) noexcept { - static StringArray validExporters = + static StringArray validExportersUpper = { "XCODE_MAC", "XCODE_IPHONE", @@ -334,10 +334,38 @@ bool isValidExporterName (const String& exporterName) noexcept "LINUX_MAKE", "ANDROIDSTUDIO", "CODEBLOCKS_WINDOWS", - "CODEBLOCKS_LINUX" + "CODEBLOCKS_LINUX", + "CLION" }; - return validExporters.contains (exporterName); + static StringArray validExportersLower = + { + "xcode_mac", + "xcode_iphone", + "vs2013", + "vs2015", + "vs2017", + "linux_make", + "androidstudio", + "codeblocks_windows", + "codeblocks_linux", + "clion" + }; + + if (lowerCase) + return validExportersLower; + + return validExportersUpper; +} + +bool isJUCEModule (const String& moduleID) noexcept +{ + return getJUCEModules().contains (moduleID); +} + +bool isValidExporterName (const String& exporterName) noexcept +{ + return getJUCEExporters().contains (exporterName); } String getTargetFolderForExporter (const String& exporterName) noexcept @@ -351,6 +379,7 @@ String getTargetFolderForExporter (const String& exporterName) noexcept if (exporterName == "ANDROIDSTUDIO") return "Android"; if (exporterName == "CODEBLOCKS_WINDOWS") return "CodeBlocksWindows"; if (exporterName == "CODEBLOCKS_LINUX") return "CodeBlocksLinux"; + if (exporterName == "CLION") return "CLion"; return {}; } diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h b/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h index 7a6c1c068e..b9f4b4f760 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h @@ -58,6 +58,9 @@ void addPlistDictionaryKeyInt (XmlElement* xml, const String& key, int value); bool fileNeedsCppSyntaxHighlighting (const File& file); +StringArray getJUCEModules() noexcept; +StringArray getJUCEExporters (bool lowerCase = false) noexcept; + bool isJUCEModule (const String& moduleID) noexcept; bool isValidExporterName (const String& exporterName) noexcept; String getTargetFolderForExporter (const String& exporterName) noexcept;