Changes missing are related to adding the usage of the new exporter. The rest is as follows:
Changes to VC2010BuildConfiguration:
virtual String getToolsVersion() const { return "4.0"; }
//[...]
//==============================================================================
void fillInProjectXml (XmlElement& projectXml) const
{
projectXml.setAttribute ("DefaultTargets", "Build");
projectXml.setAttribute ("ToolsVersion", getToolsVersion());
VS2013 exporter itself:
//==============================================================================
class MSVCProjectExporterVC2013 : public MSVCProjectExporterVC2010
{
public:
MSVCProjectExporterVC2013 (Project& p, const ValueTree& t)
: MSVCProjectExporterVC2010 (p, t, "VisualStudio2013")
{
name = getName();
}
static const char* getName() { return "Visual Studio 2013"; }
static const char* getValueTreeTypeName() { return "VS2013"; }
int getVisualStudioVersion() const { return 11; }
String getSolutionComment() const { return "# Visual Studio 2013"; }
virtual String getToolsVersion() const { return "12.0"; }
String getPlatformToolset() const
{
const String s (settings [Ids::toolset].toString());
return s.isNotEmpty() ? s : "v120";
}
Value getPlatformToolsetValue() { return getSetting (Ids::toolset); }
static MSVCProjectExporterVC2013* createForSettings (Project& project, const ValueTree& settings)
{
if (settings.hasType (getValueTreeTypeName()))
return new MSVCProjectExporterVC2013 (project, settings);
return nullptr;
}
void createExporterProperties (PropertyListBuilder& props)
{
MSVCProjectExporterVC2010::createExporterProperties (props);
const char* const toolsetNames[] = { "(default)", "v120", "v120_xp", nullptr };
const var toolsets[] = { var(), "v120", "v120_xp" };
props.add (new ChoicePropertyComponent (getPlatformToolsetValue(), "Platform Toolset",
StringArray (toolsetNames),
Array<var> (toolsets, numElementsInArray (toolsets))));
}
private:
void addPlatformToolsetToPropertyGroup (XmlElement& p) const
{
forEachXmlChildElementWithTagName (p, e, "PropertyGroup")
{
XmlElement* platformToolset (new XmlElement ("PlatformToolset"));
platformToolset->addTextElement (getPlatformToolset());
e->addChildElement (platformToolset);
}
}
JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2013)
};