1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

Projucer: Add Visual Studio 2026 exporter

This commit is contained in:
attila 2025-09-11 15:21:14 +02:00 committed by Attila Szarvas
parent 049cd7c77e
commit d1eb77be50
3 changed files with 50 additions and 1 deletions

View file

@ -2863,3 +2863,48 @@ private:
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2022)
};
//==============================================================================
class MSVCProjectExporterVC2026 final : public MSVCProjectExporterBase
{
public:
MSVCProjectExporterVC2026 (Project& p, const ValueTree& t)
: MSVCProjectExporterBase (p, t, getTargetFolderName())
{
name = getDisplayName();
targetPlatformVersion.setDefault (defaultTargetPlatform);
platformToolsetValue.setDefault (defaultToolset);
}
static String getDisplayName() { return "Visual Studio 2026"; }
static String getValueTreeTypeName() { return "VS2026"; }
static String getTargetFolderName() { return "VisualStudio2026"; }
Identifier getExporterIdentifier() const override { return getValueTreeTypeName(); }
int getVisualStudioVersion() const override { return 18; }
String getSolutionComment() const override { return "# Visual Studio Version 18"; }
String getToolsVersion() const override { return "18.0"; }
String getDefaultToolset() const override { return defaultToolset; }
String getDefaultWindowsTargetPlatformVersion() const override { return defaultTargetPlatform; }
static MSVCProjectExporterVC2026* createForSettings (Project& projectToUse, const ValueTree& settingsToUse)
{
if (settingsToUse.hasType (getValueTreeTypeName()))
return new MSVCProjectExporterVC2026 (projectToUse, settingsToUse);
return nullptr;
}
void createExporterProperties (PropertyListBuilder& props) override
{
addToolsetProperty (props, { "v140", "v140_xp", "v141", "v141_xp", "v142", "v143", "v145", "ClangCL" });
MSVCProjectExporterBase::createExporterProperties (props);
}
private:
const String defaultToolset { "v145" }, defaultTargetPlatform { "10.0" };
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2026)
};

View file

@ -90,6 +90,7 @@ std::vector<ProjectExporter::ExporterTypeInfo> ProjectExporter::getExporterTypeI
XcodeProjectExporter::getTargetFolderNameiOS(),
createIcon (export_xcode_svg, (size_t) export_xcode_svgSize) },
createExporterTypeInfo<MSVCProjectExporterVC2026> (export_visualStudio_svg, export_visualStudio_svgSize),
createExporterTypeInfo<MSVCProjectExporterVC2022> (export_visualStudio_svg, export_visualStudio_svgSize),
createExporterTypeInfo<MSVCProjectExporterVC2019> (export_visualStudio_svg, export_visualStudio_svgSize),
@ -160,6 +161,7 @@ std::unique_ptr<ProjectExporter> ProjectExporter::createExporterFromSettings (Pr
return tryCreatingExporter (project,
settings,
Tag<XcodeProjectExporter>{},
Tag<MSVCProjectExporterVC2026>{},
Tag<MSVCProjectExporterVC2022>{},
Tag<MSVCProjectExporterVC2019>{},
Tag<MakefileProjectExporter>{},
@ -176,6 +178,7 @@ bool ProjectExporter::canProjectBeLaunched (Project* project)
XcodeProjectExporter::getValueTreeTypeNameMac(),
XcodeProjectExporter::getValueTreeTypeNameiOS(),
#elif JUCE_WINDOWS
MSVCProjectExporterVC2026::getValueTreeTypeName(),
MSVCProjectExporterVC2022::getValueTreeTypeName(),
MSVCProjectExporterVC2019::getValueTreeTypeName(),
#endif

View file

@ -254,7 +254,8 @@ ValueTree PIPGenerator::createExporterChild (const Identifier& exporterIdentifie
exporter.setProperty (Ids::targetFolder, "Builds/" + ProjectExporter::getTypeInfoForExporter (exporterIdentifier).targetFolder, nullptr);
const Identifier vsExporters[] { MSVCProjectExporterVC2019::getValueTreeTypeName(),
MSVCProjectExporterVC2022::getValueTreeTypeName() };
MSVCProjectExporterVC2022::getValueTreeTypeName(),
MSVCProjectExporterVC2026::getValueTreeTypeName() };
if (isJUCEExample (pipFile) && std::find (std::begin (vsExporters), std::end (vsExporters), exporterIdentifier) != std::end (vsExporters))
{