CREATE_PROJECT: Add support for Visual Studio 2012 project creation

This commit is contained in:
Littleboy 2012-07-11 01:08:22 -04:00
parent 4e0f6d346f
commit d86c0a44f8
6 changed files with 122 additions and 10 deletions

View file

@ -46,7 +46,13 @@ const char *MSBuildProvider::getPropertiesExtension() {
}
int MSBuildProvider::getVisualStudioVersion() {
return 2010;
if (_version == 10)
return 2010;
if (_version == 11)
return 2012;
error("Unsupported version passed to getVisualStudioVersion");
}
namespace {
@ -58,9 +64,10 @@ inline void outputConfiguration(std::ostream &project, const std::string &config
"\t\t</ProjectConfiguration>\n";
}
inline void outputConfigurationType(const BuildSetup &setup, std::ostream &project, const std::string &name, const std::string &config) {
inline void outputConfigurationType(const BuildSetup &setup, std::ostream &project, const std::string &name, const std::string &config, int version) {
project << "\t<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='" << config << "'\" Label=\"Configuration\">\n"
"\t\t<ConfigurationType>" << ((name == setup.projectName || setup.devTools) ? "Application" : "StaticLibrary") << "</ConfigurationType>\n"
"\t\t<PlatformToolset>v" << version << "0</PlatformToolset>"
"\t</PropertyGroup>\n";
}
@ -98,17 +105,18 @@ void MSBuildProvider::createProjectFile(const std::string &name, const std::stri
"\t\t<ProjectGuid>{" << uuid << "}</ProjectGuid>\n"
"\t\t<RootNamespace>" << name << "</RootNamespace>\n"
"\t\t<Keyword>Win32Proj</Keyword>\n"
"\t\t<VCTargetsPath Condition=\"'$(VCTargetsPath11)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''\">$(VCTargetsPath11)</VCTargetsPath>\n"
"\t</PropertyGroup>\n";
// Shared configuration
project << "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n";
outputConfigurationType(setup, project, name, "Release|Win32");
outputConfigurationType(setup, project, name, "Analysis|Win32");
outputConfigurationType(setup, project, name, "Debug|Win32");
outputConfigurationType(setup, project, name, "Release|x64");
outputConfigurationType(setup, project, name, "Analysis|x64");
outputConfigurationType(setup, project, name, "Debug|x64");
outputConfigurationType(setup, project, name, "Release|Win32", _version);
outputConfigurationType(setup, project, name, "Analysis|Win32", _version);
outputConfigurationType(setup, project, name, "Debug|Win32", _version);
outputConfigurationType(setup, project, name, "Release|x64", _version);
outputConfigurationType(setup, project, name, "Analysis|x64", _version);
outputConfigurationType(setup, project, name, "Debug|x64", _version);
project << "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n"
"\t<ImportGroup Label=\"ExtensionSettings\">\n"