Browse Source

Made the Projucer's Windows target platform property chooser available to all Visual Studio exporters

tags/2021-05-28
hogliux 8 years ago
parent
commit
ceab51f7c4
1 changed files with 24 additions and 19 deletions
  1. +24
    -19
      extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h

+ 24
- 19
extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h View File

@@ -1734,6 +1734,8 @@ public:
int getVisualStudioVersion() const override { return 11; }
String getSolutionComment() const override { return "# Visual Studio 2012"; }
String getDefaultToolset() const override { return "v110"; }
Value getWindowsTargetPlatformVersionValue() { return getSetting (Ids::windowsTargetPlatformVersion); }
String getWindowsTargetPlatformVersion() const { return settings [Ids::windowsTargetPlatformVersion]; }
static MSVCProjectExporterVC2012* createForSettings (Project& project, const ValueTree& settings)
{
@@ -1754,6 +1756,16 @@ public:
addIPPLibraryProperty (props);
}
void addWindowsTargetPlatformProperties (PropertyListBuilder& props)
{
static const char* targetPlatformNames[] = { "(default)", "8.1", "10.0.10240.0", "10.0.10586.0", "10.0.14393.0", "10.0.15063.0", nullptr };
const var targetPlatforms[] = { var(), "8.1", "10.0.10240.0", "10.0.10586.0", "10.0.14393.0", "10.0.15063.0" };
props.add (new ChoicePropertyComponent (getWindowsTargetPlatformVersionValue(), "Windows Target Platform",
StringArray (targetPlatformNames), Array<var> (targetPlatforms, numElementsInArray (targetPlatforms))),
"The Windows target platform version to use");
}
private:
void addPlatformToolsetToPropertyGroup (XmlElement& p) const override
{
@@ -1761,6 +1773,15 @@ private:
e->createNewChildElement ("PlatformToolset")->addTextElement (getPlatformToolset());
}
void addWindowsTargetPlatformVersionToPropertyGroup (XmlElement& p) const override
{
const String& targetVersion = getWindowsTargetPlatformVersion();
if (targetVersion.isNotEmpty())
forEachXmlChildElementWithTagName (p, e, "PropertyGroup")
e->createNewChildElement ("WindowsTargetPlatformVersion")->addTextElement (getWindowsTargetPlatformVersion());
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2012)
};
@@ -1798,6 +1819,7 @@ public:
addToolsetProperty (props, toolsetNames, toolsets, numElementsInArray (toolsets));
addIPPLibraryProperty (props);
addWindowsTargetPlatformProperties (props);
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2013)
@@ -1837,6 +1859,7 @@ public:
addToolsetProperty (props, toolsetNames, toolsets, numElementsInArray (toolsets));
addIPPLibraryProperty (props);
addWindowsTargetPlatformProperties (props);
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2015)
@@ -1870,9 +1893,6 @@ public:
Value getCppStandardValue() { return getSetting (Ids::cppLanguageStandard); }
String getCppLanguageStandard() const override { return settings [Ids::cppLanguageStandard]; }
Value getWindowsTargetPlatformVersionValue() { return getSetting (Ids::windowsTargetPlatformVersion); }
String getWindowsTargetPlatformVersion() const { return settings [Ids::windowsTargetPlatformVersion]; }
void createExporterProperties (PropertyListBuilder& props) override
{
MSVCProjectExporterBase::createExporterProperties (props);
@@ -1882,6 +1902,7 @@ public:
addToolsetProperty (props, toolsetNames, toolsets, numElementsInArray (toolsets));
addIPPLibraryProperty (props);
addWindowsTargetPlatformProperties (props);
static const char* cppStandardNames[] = { "(default)", "C++14", "Latest C++ Standard", nullptr };
@@ -1893,22 +1914,6 @@ public:
props.add (new ChoicePropertyComponent (getCppStandardValue(), "C++ standard to use",
StringArray (cppStandardNames), cppStandardValues),
"The C++ language standard to use");
static const char* targetPlatformNames[] = { "(default)", "8.1", "10.0.10240.0", "10.0.10586.0", "10.0.14393.0", "10.0.15063.0", nullptr };
const var targetPlatforms[] = { var(), "8.1", "10.0.10240.0", "10.0.10586.0", "10.0.14393.0", "10.0.15063.0" };
props.add (new ChoicePropertyComponent (getWindowsTargetPlatformVersionValue(), "VS2017 Windows Target Platform",
StringArray (targetPlatformNames), Array<var> (targetPlatforms, numElementsInArray (targetPlatforms))),
"The Windows target platform to use");
}
void addWindowsTargetPlatformVersionToPropertyGroup (XmlElement& p) const override
{
const String& targetVersion = getWindowsTargetPlatformVersion();
if (targetVersion.isNotEmpty())
forEachXmlChildElementWithTagName (p, e, "PropertyGroup")
e->createNewChildElement ("WindowsTargetPlatformVersion")->addTextElement (getWindowsTargetPlatformVersion());
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2017)


Loading…
Cancel
Save