Browse Source

Projucer: Added a VS2019 exporter

tags/2021-05-28
ed 6 years ago
parent
commit
d84b3d62bd
2 changed files with 72 additions and 18 deletions
  1. +45
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h
  2. +27
    -18
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp

+ 45
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h View File

@@ -1985,3 +1985,48 @@ public:
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2017)
};
//==============================================================================
class MSVCProjectExporterVC2019 : public MSVCProjectExporterBase
{
public:
MSVCProjectExporterVC2019 (Project& p, const ValueTree& t)
: MSVCProjectExporterBase (p, t, getTargetFolderForExporter (getValueTreeTypeName()))
{
name = getName();
targetPlatformVersion.setDefault (getDefaultWindowsTargetPlatformVersion());
platformToolsetValue.setDefault (getDefaultToolset());
}
static const char* getName() { return "Visual Studio 2019"; }
static const char* getValueTreeTypeName() { return "VS2019"; }
int getVisualStudioVersion() const override { return 16; }
String getSolutionComment() const override { return "# Visual Studio 2019"; }
String getToolsVersion() const override { return "16.0"; }
String getDefaultToolset() const override { return "v142"; }
String getDefaultWindowsTargetPlatformVersion() const override { return "10.0"; }
static MSVCProjectExporterVC2019* createForSettings (Project& project, const ValueTree& settings)
{
if (settings.hasType (getValueTreeTypeName()))
return new MSVCProjectExporterVC2019 (project, settings);
return nullptr;
}
void createExporterProperties (PropertyListBuilder& props) override
{
MSVCProjectExporterBase::createExporterProperties (props);
static const char* toolsetNames[] = { "v140", "v140_xp", "v141", "v141_xp", "v142" };
const var toolsets[] = { "v140", "v140_xp", "v141", "v141_xp", "v142" };
addToolsetProperty (props, toolsetNames, toolsets, numElementsInArray (toolsets));
addIPPLibraryProperty (props);
addWindowsTargetPlatformProperties (props);
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2019)
};

+ 27
- 18
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp View File

@@ -52,6 +52,7 @@ Array<ProjectExporter::ExporterTypeInfo> ProjectExporter::getExporterTypes()
addType (types, XcodeProjectExporter::getNameMac(), BinaryData::export_xcode_svg, BinaryData::export_xcode_svgSize);
addType (types, XcodeProjectExporter::getNameiOS(), BinaryData::export_xcode_svg, BinaryData::export_xcode_svgSize);
addType (types, MSVCProjectExporterVC2019::getName(), BinaryData::export_visualStudio_svg, BinaryData::export_visualStudio_svgSize);
addType (types, MSVCProjectExporterVC2017::getName(), BinaryData::export_visualStudio_svg, BinaryData::export_visualStudio_svgSize);
addType (types, MSVCProjectExporterVC2015::getName(), BinaryData::export_visualStudio_svg, BinaryData::export_visualStudio_svgSize);
addType (types, MSVCProjectExporterVC2013::getName(), BinaryData::export_visualStudio_svg, BinaryData::export_visualStudio_svgSize);
@@ -72,14 +73,15 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
{
case 0: exp = new XcodeProjectExporter (project, ValueTree (XcodeProjectExporter ::getValueTreeTypeName (false)), false); break;
case 1: exp = new XcodeProjectExporter (project, ValueTree (XcodeProjectExporter ::getValueTreeTypeName (true)), true); break;
case 2: exp = new MSVCProjectExporterVC2017 (project, ValueTree (MSVCProjectExporterVC2017 ::getValueTreeTypeName())); break;
case 3: exp = new MSVCProjectExporterVC2015 (project, ValueTree (MSVCProjectExporterVC2015 ::getValueTreeTypeName())); break;
case 4: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013 ::getValueTreeTypeName())); break;
case 5: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
case 6: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break;
case 7: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::windowsTarget)), CodeBlocksProjectExporter::windowsTarget); break;
case 8: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break;
case 9: exp = new CLionProjectExporter (project, ValueTree (CLionProjectExporter ::getValueTreeTypeName())); break;
case 2: exp = new MSVCProjectExporterVC2019 (project, ValueTree (MSVCProjectExporterVC2019 ::getValueTreeTypeName())); break;
case 3: exp = new MSVCProjectExporterVC2017 (project, ValueTree (MSVCProjectExporterVC2017 ::getValueTreeTypeName())); break;
case 4: exp = new MSVCProjectExporterVC2015 (project, ValueTree (MSVCProjectExporterVC2015 ::getValueTreeTypeName())); break;
case 5: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013 ::getValueTreeTypeName())); break;
case 6: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
case 7: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break;
case 8: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::windowsTarget)), CodeBlocksProjectExporter::windowsTarget); break;
case 9: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter ::getValueTreeTypeName (CodeBlocksProjectExporter::linuxTarget)), CodeBlocksProjectExporter::linuxTarget); break;
case 10: exp = new CLionProjectExporter (project, ValueTree (CLionProjectExporter ::getValueTreeTypeName())); break;
}
exp->createDefaultConfigs();
@@ -116,14 +118,17 @@ String ProjectExporter::getValueTreeNameForExporter (const String& exporterName)
if (exporterName == XcodeProjectExporter::getNameiOS())
return XcodeProjectExporter::getValueTreeTypeName (true);
if (exporterName == MSVCProjectExporterVC2013::getName())
return MSVCProjectExporterVC2013::getValueTreeTypeName();
if (exporterName == MSVCProjectExporterVC2019::getName())
return MSVCProjectExporterVC2019::getValueTreeTypeName();
if (exporterName == MSVCProjectExporterVC2017::getName())
return MSVCProjectExporterVC2017::getValueTreeTypeName();
if (exporterName == MSVCProjectExporterVC2015::getName())
return MSVCProjectExporterVC2015::getValueTreeTypeName();
if (exporterName == MSVCProjectExporterVC2017::getName())
return MSVCProjectExporterVC2017::getValueTreeTypeName();
if (exporterName == MSVCProjectExporterVC2013::getName())
return MSVCProjectExporterVC2013::getValueTreeTypeName();
if (exporterName == MakefileProjectExporter::getNameLinux())
return MakefileProjectExporter::getValueTreeTypeName();
@@ -147,6 +152,7 @@ String ProjectExporter::getTargetFolderForExporter (const String& exporterValueT
{
if (exporterValueTreeName == "XCODE_MAC") return "MacOSX";
if (exporterValueTreeName == "XCODE_IPHONE") return "iOS";
if (exporterValueTreeName == "VS2019") return "VisualStudio2019";
if (exporterValueTreeName == "VS2017") return "VisualStudio2017";
if (exporterValueTreeName == "VS2015") return "VisualStudio2015";
if (exporterValueTreeName == "VS2013") return "VisualStudio2013";
@@ -165,9 +171,10 @@ StringArray ProjectExporter::getAllDefaultBuildsFolders()
folders.add (getDefaultBuildsRootFolder() + "iOS");
folders.add (getDefaultBuildsRootFolder() + "MacOSX");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2013");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2015");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2019");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2017");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2015");
folders.add (getDefaultBuildsRootFolder() + "VisualStudio2013");
folders.add (getDefaultBuildsRootFolder() + "LinuxMakefile");
folders.add (getDefaultBuildsRootFolder() + "CodeBlocksWindows");
folders.add (getDefaultBuildsRootFolder() + "CodeBlocksLinux");
@@ -197,9 +204,10 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const Str
ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings)
{
ProjectExporter* exp = MSVCProjectExporterVC2013 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2015 ::createForSettings (project, settings);
ProjectExporter* exp = MSVCProjectExporterVC2019 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2017 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2015 ::createForSettings (project, settings);
if (exp == nullptr) exp = MSVCProjectExporterVC2013 ::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);
@@ -220,9 +228,10 @@ bool ProjectExporter::canProjectBeLaunched (Project* project)
XcodeProjectExporter::getValueTreeTypeName (false),
XcodeProjectExporter::getValueTreeTypeName (true),
#elif JUCE_WINDOWS
MSVCProjectExporterVC2013::getValueTreeTypeName(),
MSVCProjectExporterVC2015::getValueTreeTypeName(),
MSVCProjectExporterVC2019::getValueTreeTypeName(),
MSVCProjectExporterVC2017::getValueTreeTypeName(),
MSVCProjectExporterVC2015::getValueTreeTypeName(),
MSVCProjectExporterVC2013::getValueTreeTypeName(),
#elif JUCE_LINUX
// (this doesn't currently launch.. not really sure what it would do on linux)
//MakefileProjectExporter::getValueTreeTypeName(),


Loading…
Cancel
Save