Merge topic 'vs10-express-64bit'
fb97ba6
Enable 64-bit tools with VS 2010 Express (#9981, #10722)
This commit is contained in:
commit
b7c29a4d73
|
@ -19,6 +19,10 @@
|
||||||
cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator()
|
cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator()
|
||||||
{
|
{
|
||||||
this->FindMakeProgramFile = "CMakeVS10FindMake.cmake";
|
this->FindMakeProgramFile = "CMakeVS10FindMake.cmake";
|
||||||
|
std::string vc10Express;
|
||||||
|
this->ExpressEdition = cmSystemTools::ReadRegistryValue(
|
||||||
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\10.0\\Setup\\VC;"
|
||||||
|
"ProductDir", vc10Express, cmSystemTools::KeyWOW64_32);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -62,6 +66,16 @@ void cmGlobalVisualStudio10Generator
|
||||||
cmGlobalVisualStudio8Generator::EnableLanguage(lang, mf, optional);
|
cmGlobalVisualStudio8Generator::EnableLanguage(lang, mf, optional);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
const char* cmGlobalVisualStudio10Generator::GetPlatformToolset()
|
||||||
|
{
|
||||||
|
if(!this->PlatformToolset.empty())
|
||||||
|
{
|
||||||
|
return this->PlatformToolset.c_str();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmGlobalVisualStudio10Generator::GetUserMacrosDirectory()
|
std::string cmGlobalVisualStudio10Generator::GetUserMacrosDirectory()
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,6 +54,12 @@ public:
|
||||||
cmMakefile *, bool optional);
|
cmMakefile *, bool optional);
|
||||||
virtual void WriteSLNHeader(std::ostream& fout);
|
virtual void WriteSLNHeader(std::ostream& fout);
|
||||||
|
|
||||||
|
/** Is the installed VS an Express edition? */
|
||||||
|
bool IsExpressEdition() const { return this->ExpressEdition; }
|
||||||
|
|
||||||
|
/** The toolset name for the target platform. */
|
||||||
|
const char* GetPlatformToolset();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Where does this version of Visual Studio look for macros for the
|
* Where does this version of Visual Studio look for macros for the
|
||||||
* current user? Returns the empty string if this version of Visual
|
* current user? Returns the empty string if this version of Visual
|
||||||
|
@ -70,5 +76,9 @@ public:
|
||||||
{ return "$(Configuration)";}
|
{ return "$(Configuration)";}
|
||||||
protected:
|
protected:
|
||||||
virtual const char* GetIDEVersion() { return "10.0"; }
|
virtual const char* GetIDEVersion() { return "10.0"; }
|
||||||
|
|
||||||
|
std::string PlatformToolset;
|
||||||
|
private:
|
||||||
|
bool ExpressEdition;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,3 +36,52 @@ void cmGlobalVisualStudio10Win64Generator
|
||||||
mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64");
|
mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64");
|
||||||
mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64");
|
mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
bool cmGlobalVisualStudio10Win64Generator::Find64BitTools(cmMakefile* mf)
|
||||||
|
{
|
||||||
|
if(!this->PlatformToolset.empty())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// This edition does not come with 64-bit tools. Look for them.
|
||||||
|
//
|
||||||
|
// TODO: Detect available tools? x64\v100 exists but does not work?
|
||||||
|
// KHLM\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0;VCTargetsPath
|
||||||
|
// c:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/Platforms/
|
||||||
|
// {Itanium,Win32,x64}/PlatformToolsets/{v100,v90,Windows7.1SDK}
|
||||||
|
std::string winSDK_7_1;
|
||||||
|
if(cmSystemTools::ReadRegistryValue(
|
||||||
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\"
|
||||||
|
"Windows\\v7.1;InstallationFolder", winSDK_7_1))
|
||||||
|
{
|
||||||
|
cmOStringStream m;
|
||||||
|
m << "Found Windows SDK v7.1: " << winSDK_7_1;
|
||||||
|
mf->DisplayStatus(m.str().c_str(), -1);
|
||||||
|
this->PlatformToolset = "Windows7.1SDK";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmOStringStream e;
|
||||||
|
e << "Cannot enable 64-bit tools with Visual Studio 2010 Express.\n"
|
||||||
|
<< "Install the Microsoft Windows SDK v7.1 to get 64-bit tools:\n"
|
||||||
|
<< " http://msdn.microsoft.com/en-us/windows/bb980924.aspx";
|
||||||
|
mf->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
|
||||||
|
cmSystemTools::SetFatalErrorOccured();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGlobalVisualStudio10Win64Generator
|
||||||
|
::EnableLanguage(std::vector<std::string> const& languages,
|
||||||
|
cmMakefile* mf, bool optional)
|
||||||
|
{
|
||||||
|
if(this->IsExpressEdition() && !this->Find64BitTools(mf))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this->cmGlobalVisualStudio10Generator
|
||||||
|
::EnableLanguage(languages, mf, optional);
|
||||||
|
}
|
||||||
|
|
|
@ -34,5 +34,8 @@ public:
|
||||||
|
|
||||||
virtual void AddPlatformDefinitions(cmMakefile* mf);
|
virtual void AddPlatformDefinitions(cmMakefile* mf);
|
||||||
|
|
||||||
|
bool Find64BitTools(cmMakefile* mf);
|
||||||
|
virtual void EnableLanguage(std::vector<std::string>const& languages,
|
||||||
|
cmMakefile *, bool optional);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -244,6 +244,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurations()
|
||||||
|
|
||||||
void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
||||||
{
|
{
|
||||||
|
cmGlobalVisualStudio10Generator* gg =
|
||||||
|
static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator);
|
||||||
std::vector<std::string> *configs =
|
std::vector<std::string> *configs =
|
||||||
static_cast<cmGlobalVisualStudio7Generator *>
|
static_cast<cmGlobalVisualStudio7Generator *>
|
||||||
(this->GlobalGenerator)->GetConfigurations();
|
(this->GlobalGenerator)->GetConfigurations();
|
||||||
|
@ -291,6 +293,13 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
||||||
{
|
{
|
||||||
this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
|
this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
|
||||||
}
|
}
|
||||||
|
if(const char* toolset = gg->GetPlatformToolset())
|
||||||
|
{
|
||||||
|
std::string pts = "<PlatformToolset>";
|
||||||
|
pts += toolset;
|
||||||
|
pts += "</PlatformToolset>\n";
|
||||||
|
this->WriteString(pts.c_str(), 2);
|
||||||
|
}
|
||||||
this->WriteString("</PropertyGroup>\n", 1);
|
this->WriteString("</PropertyGroup>\n", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue