diff --git a/extras/Projucer/Source/Project/Modules/jucer_Modules.cpp b/extras/Projucer/Source/Project/Modules/jucer_Modules.cpp index a62f187564..69e8a31bcb 100644 --- a/extras/Projucer/Source/Project/Modules/jucer_Modules.cpp +++ b/extras/Projucer/Source/Project/Modules/jucer_Modules.cpp @@ -61,14 +61,16 @@ void LibraryModule::addSearchPathsToExporter (ProjectExporter& exporter) const exporter.addToExtraSearchPaths (moduleRelativePath.getParentDirectory()); - String libDirPlatform; + const auto libDirPlatform = [&]() -> String + { + if (exporter.isLinux()) + return "Linux"; - if (exporter.isLinux()) - libDirPlatform = "Linux"; - else if (exporter.isCodeBlocks() && exporter.isWindows()) - libDirPlatform = "MinGW"; - else - libDirPlatform = exporter.getTargetFolder().getFileName(); + if (exporter.isCodeBlocks() && exporter.isWindows()) + return "MinGW"; + + return exporter.getTypeInfoForExporter (exporter.getExporterIdentifier()).targetFolder; + }(); auto libSubdirPath = moduleRelativePath.toUnixStyle() + "/libs/" + libDirPlatform; auto moduleLibDir = File (exporter.getProject().getProjectFolder().getFullPathName() + "/" + libSubdirPath); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index c362abf610..b066f1aa3e 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -76,6 +76,8 @@ public: static String getValueTreeTypeName() { return "ANDROIDSTUDIO"; } static String getTargetFolderName() { return "Android"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + static const char* getDefaultActivityClass() { return "com.rmsl.juce.JuceActivity"; } static const char* getDefaultApplicationClass() { return "com.rmsl.juce.JuceApp"; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h index a01fdf7892..54c0c0e030 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h @@ -57,6 +57,8 @@ public: static String getValueTreeTypeName() { return "CLION"; } static String getTargetFolderName() { return "CLion"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + static CLionProjectExporter* createForSettings (Project& projectToUse, const ValueTree& settingsToUse) { if (settingsToUse.hasType (getValueTreeTypeName())) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h index a5182fec71..2b29304a2a 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h @@ -98,6 +98,11 @@ public: bool isOSX() const override { return false; } bool isiOS() const override { return false; } + Identifier getExporterIdentifier() const override + { + return isLinux() ? getValueTreeTypeNameLinux() : getValueTreeTypeNameWindows(); + } + String getNewLineString() const override { return isWindows() ? "\r\n" : "\n"; } bool supportsTargetType (build_tools::ProjectType::Target::Type type) const override diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index b22f3366bb..950cd00069 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -1758,6 +1758,8 @@ public: static String getValueTreeTypeName() { return "VS2015"; } static String getTargetFolderName() { return "VisualStudio2015"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + int getVisualStudioVersion() const override { return 14; } String getSolutionComment() const override { return "# Visual Studio 2015"; } String getToolsVersion() const override { return "14.0"; } @@ -1801,6 +1803,8 @@ public: static String getValueTreeTypeName() { return "VS2017"; } static String getTargetFolderName() { return "VisualStudio2017"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + int getVisualStudioVersion() const override { return 15; } String getSolutionComment() const override { return "# Visual Studio 2017"; } String getToolsVersion() const override { return "15.0"; } @@ -1844,6 +1848,8 @@ public: static String getValueTreeTypeName() { return "VS2019"; } static String getTargetFolderName() { return "VisualStudio2019"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + int getVisualStudioVersion() const override { return 16; } String getSolutionComment() const override { return "# Visual Studio 2019"; } String getToolsVersion() const override { return "16.0"; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index 86c33e794b..59c3c08388 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -379,6 +379,8 @@ public: static String getValueTreeTypeName() { return "LINUX_MAKE"; } static String getTargetFolderName() { return "LinuxMakefile"; } + Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); } + static MakefileProjectExporter* createForSettings (Project& projectToUse, const ValueTree& settingsToUse) { if (settingsToUse.hasType (getValueTreeTypeName())) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 064555c185..e109d9e340 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -305,6 +305,11 @@ public: bool isOSX() const override { return ! iOS; } bool isiOS() const override { return iOS; } + Identifier getExporterIdentifier() const override + { + return iOS ? getValueTreeTypeNameiOS() : getValueTreeTypeNameMac(); + } + bool supportsPrecompiledHeaders() const override { return true; } String getNewLineString() const override { return "\n"; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp index 887ffe99fd..669f19d191 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp @@ -121,6 +121,7 @@ ProjectExporter::ExporterTypeInfo ProjectExporter::getTypeInfoForExporter (const if (iter != typeInfos.end()) return *iter; + jassertfalse; return {}; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h index 5ba198e588..da225fc496 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h @@ -58,6 +58,8 @@ public: static bool canProjectBeLaunched (Project*); + virtual Identifier getExporterIdentifier() const = 0; + //============================================================================== // capabilities of exporter virtual bool usesMMFiles() const = 0;