From 8f8c9cccd44c3668c795f231ada7c3f804279f09 Mon Sep 17 00:00:00 2001 From: jules Date: Sat, 15 Nov 2014 16:43:45 +0000 Subject: [PATCH] Introjucer: added an exporter type for VS2015 --- .../Project Saving/jucer_ProjectExport_MSVC.h | 41 +++++++++++++++++++ .../Project Saving/jucer_ProjectExporter.cpp | 12 ++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h index 068b114b17..b8fd25667c 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h @@ -1599,3 +1599,44 @@ public: private: JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2013) }; + +//============================================================================== +class MSVCProjectExporterVC2015 : public MSVCProjectExporterVC2012 +{ +public: + MSVCProjectExporterVC2015 (Project& p, const ValueTree& t) + : MSVCProjectExporterVC2012 (p, t, "VisualStudio2015") + { + name = getName(); + } + + static const char* getName() { return "Visual Studio 2015"; } + static const char* getValueTreeTypeName() { return "VS2015"; } + int getVisualStudioVersion() const override { return 14; } + String getSolutionComment() const override { return "# Visual Studio 2015"; } + String getToolsVersion() const override { return "14.0"; } + String getDefaultToolset() const override { return "v140"; } + + static MSVCProjectExporterVC2015* createForSettings (Project& project, const ValueTree& settings) + { + if (settings.hasType (getValueTreeTypeName())) + return new MSVCProjectExporterVC2015 (project, settings); + + return nullptr; + } + + void createExporterProperties (PropertyListBuilder& props) override + { + MSVCProjectExporterBase::createExporterProperties (props); + + static const char* toolsetNames[] = { "(default)", "v140", "v140_xp", nullptr }; + const var toolsets[] = { var(), "v140", "v140_xp" }; + + props.add (new ChoicePropertyComponent (getPlatformToolsetValue(), "Platform Toolset", + StringArray (toolsetNames), + Array (toolsets, numElementsInArray (toolsets)))); + } + +private: + JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2015) +}; diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp index a4ebbfa60b..018deae396 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp @@ -42,6 +42,7 @@ StringArray ProjectExporter::getExporterNames() s.add (MSVCProjectExporterVC2010::getName()); s.add (MSVCProjectExporterVC2012::getName()); s.add (MSVCProjectExporterVC2013::getName()); + s.add (MSVCProjectExporterVC2015::getName()); s.add (MakefileProjectExporter::getNameLinux()); s.add (AndroidProjectExporter::getNameAndroid()); s.add (CodeBlocksProjectExporter::getNameCodeBlocks()); @@ -74,9 +75,10 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int case 4: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break; case 5: exp = new MSVCProjectExporterVC2012 (project, ValueTree (MSVCProjectExporterVC2012::getValueTreeTypeName())); break; case 6: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013::getValueTreeTypeName())); break; - case 7: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break; - case 8: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break; - case 9: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName())); break; + case 7: exp = new MSVCProjectExporterVC2015 (project, ValueTree (MSVCProjectExporterVC2015::getValueTreeTypeName())); break; + case 8: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break; + case 9: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break; + case 10: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName())); break; default: jassertfalse; return 0; } @@ -99,6 +101,7 @@ ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueT if (exp == nullptr) exp = MSVCProjectExporterVC2010::createForSettings (project, settings); if (exp == nullptr) exp = MSVCProjectExporterVC2012::createForSettings (project, settings); if (exp == nullptr) exp = MSVCProjectExporterVC2013::createForSettings (project, settings); + if (exp == nullptr) exp = MSVCProjectExporterVC2015::createForSettings (project, settings); if (exp == nullptr) exp = XCodeProjectExporter ::createForSettings (project, settings); if (exp == nullptr) exp = MakefileProjectExporter ::createForSettings (project, settings); if (exp == nullptr) exp = AndroidProjectExporter ::createForSettings (project, settings); @@ -123,6 +126,7 @@ bool ProjectExporter::canProjectBeLaunched (Project* project) MSVCProjectExporterVC2010::getValueTreeTypeName(), MSVCProjectExporterVC2012::getValueTreeTypeName(), MSVCProjectExporterVC2013::getValueTreeTypeName(), + MSVCProjectExporterVC2015::getValueTreeTypeName(), #elif JUCE_LINUX // (this doesn't currently launch.. not really sure what it would do on linux) //MakefileProjectExporter::getValueTreeTypeName(), @@ -695,4 +699,4 @@ String ProjectExporter::getExternalLibraryFlags (const BuildConfiguration& confi return replacePreprocessorTokens (config, "-l" + libraries.joinIntoString (" -l")).trim(); return String::empty; -} +} \ No newline at end of file