mirror of
https://github.com/reactos/CMake.git
synced 2025-02-03 10:31:55 +00:00
65624c39e3
Call the generator "Visual Studio 14" without any year because this version of VS does not provide a year in the product name. Copy cmGlobalVisualStudio12Generator to cmGlobalVisualStudio14Generator and update version numbers accordingly. Add the VS14 enumeration value. Teach the platform module Windows-MSVC to set MSVC14 and document the variable. Teach module InstallRequiredSystemLibraries to look for the VS 14 runtime libraries. Teach tests CheckCompilerRelatedVariables, VSExternalInclude, and RunCMake.GeneratorToolset to treat VS 14 as they do VS 10, 11, and 12. Co-Author: Pawel Stopinski <diokhan@go2.pl>
117 lines
3.8 KiB
C++
117 lines
3.8 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2014 Kitware, Inc., Insight Software Consortium
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
#include "cmGlobalVisualStudio14Generator.h"
|
|
#include "cmLocalVisualStudio10Generator.h"
|
|
#include "cmMakefile.h"
|
|
|
|
static const char vs14generatorName[] = "Visual Studio 14";
|
|
|
|
class cmGlobalVisualStudio14Generator::Factory
|
|
: public cmGlobalGeneratorFactory
|
|
{
|
|
public:
|
|
virtual cmGlobalGenerator* CreateGlobalGenerator(
|
|
const std::string& genName) const
|
|
{
|
|
if(strncmp(genName.c_str(), vs14generatorName,
|
|
sizeof(vs14generatorName) - 1) != 0)
|
|
{
|
|
return 0;
|
|
}
|
|
const char* p = genName.c_str() + sizeof(vs14generatorName) - 1;
|
|
if(!*p)
|
|
{
|
|
return new cmGlobalVisualStudio14Generator(
|
|
genName, "", "");
|
|
}
|
|
if(*p++ != ' ')
|
|
{ return 0; }
|
|
if(strcmp(p, "Win64") == 0)
|
|
{
|
|
return new cmGlobalVisualStudio14Generator(
|
|
genName, "x64", "CMAKE_FORCE_WIN64");
|
|
}
|
|
if(strcmp(p, "ARM") == 0)
|
|
{
|
|
return new cmGlobalVisualStudio14Generator(
|
|
genName, "ARM", "");
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
virtual void GetDocumentation(cmDocumentationEntry& entry) const
|
|
{
|
|
entry.Name = vs14generatorName;
|
|
entry.Brief = "Generates Visual Studio 14 project files.";
|
|
}
|
|
|
|
virtual void GetGenerators(std::vector<std::string>& names) const
|
|
{
|
|
names.push_back(vs14generatorName);
|
|
names.push_back(vs14generatorName + std::string(" ARM"));
|
|
names.push_back(vs14generatorName + std::string(" Win64"));
|
|
}
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
cmGlobalGeneratorFactory* cmGlobalVisualStudio14Generator::NewFactory()
|
|
{
|
|
return new Factory;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
cmGlobalVisualStudio14Generator::cmGlobalVisualStudio14Generator(
|
|
const std::string& name, const std::string& platformName,
|
|
const std::string& additionalPlatformDefinition)
|
|
: cmGlobalVisualStudio12Generator(name, platformName,
|
|
additionalPlatformDefinition)
|
|
{
|
|
std::string vc14Express;
|
|
this->ExpressEdition = cmSystemTools::ReadRegistryValue(
|
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\14.0\\Setup\\VC;"
|
|
"ProductDir", vc14Express, cmSystemTools::KeyWOW64_32);
|
|
this->DefaultPlatformToolset = "v140";
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
cmGlobalVisualStudio14Generator::MatchesGeneratorName(
|
|
const std::string& name) const
|
|
{
|
|
return name == this->GetName();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout)
|
|
{
|
|
// Visual Studio 14 writes .sln format 12.00
|
|
fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n";
|
|
if (this->ExpressEdition)
|
|
{
|
|
fout << "# Visual Studio Express 14 for Windows Desktop\n";
|
|
}
|
|
else
|
|
{
|
|
fout << "# Visual Studio 14\n";
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
cmLocalGenerator *cmGlobalVisualStudio14Generator::CreateLocalGenerator()
|
|
{
|
|
cmLocalVisualStudio10Generator* lg =
|
|
new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14);
|
|
lg->SetPlatformName(this->GetPlatformName());
|
|
lg->SetGlobalGenerator(this);
|
|
return lg;
|
|
}
|