VS: Add CMAKE_VS_PLATFORM_NAME definition to cmMakefile

When adding more platforms to the Visual Studio generators a simple
regular expressing can not handle all cases anymore. This new
define holds the name of the Visual Studio target platform.
This commit is contained in:
Patrick Gansterer 2012-11-20 11:33:34 +01:00 committed by Brad King
parent 14861f88d2
commit d41d4d3d61
3 changed files with 16 additions and 6 deletions

View File

@ -107,11 +107,14 @@ Id flags: ${testflags}
") ")
# Compile the compiler identification source. # Compile the compiler identification source.
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)( .NET)?( 200[358])? *((Win64|IA64|ARM))?") if("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)")
set(vs_version ${CMAKE_MATCH_1}) set(vs_version ${CMAKE_MATCH_1})
set(vs_arch ${CMAKE_MATCH_4}) set(id_arch ${CMAKE_VS_PLATFORM_NAME})
set(id_lang "${lang}") set(id_lang "${lang}")
set(id_cl cl.exe) set(id_cl cl.exe)
if(NOT id_arch)
set(id_arch Win32)
endif()
if(NOT "${vs_version}" VERSION_LESS 10) if(NOT "${vs_version}" VERSION_LESS 10)
set(v 10) set(v 10)
set(ext vcxproj) set(ext vcxproj)
@ -123,16 +126,14 @@ Id flags: ${testflags}
set(v 6) set(v 6)
set(ext dsp) set(ext dsp)
endif() endif()
if("${vs_arch}" STREQUAL "Win64") if("${id_arch}" STREQUAL "x64")
set(id_machine_10 MachineX64) set(id_machine_10 MachineX64)
set(id_arch x64) elseif("${id_arch}" STREQUAL "Itanium")
elseif("${vs_arch}" STREQUAL "IA64")
set(id_machine_10 MachineIA64) set(id_machine_10 MachineIA64)
set(id_arch ia64) set(id_arch ia64)
else() else()
set(id_machine_6 x86) set(id_machine_6 x86)
set(id_machine_10 MachineX86) set(id_machine_10 MachineX86)
set(id_arch Win32)
endif() endif()
if(CMAKE_VS_PLATFORM_TOOLSET) if(CMAKE_VS_PLATFORM_TOOLSET)
set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>") set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")

View File

@ -98,6 +98,13 @@ cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator()
return lg; return lg;
} }
//----------------------------------------------------------------------------
void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf)
{
cmGlobalVisualStudio71Generator::AddPlatformDefinitions(mf);
mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName());
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// ouput standard header for dsw file // ouput standard header for dsw file
void cmGlobalVisualStudio8Generator::WriteSLNHeader(std::ostream& fout) void cmGlobalVisualStudio8Generator::WriteSLNHeader(std::ostream& fout)

View File

@ -38,6 +38,8 @@ public:
///! Create a local generator appropriate to this Global Generator ///! Create a local generator appropriate to this Global Generator
virtual cmLocalGenerator *CreateLocalGenerator(); virtual cmLocalGenerator *CreateLocalGenerator();
virtual void AddPlatformDefinitions(cmMakefile* mf);
/** /**
* Override Configure and Generate to add the build-system check * Override Configure and Generate to add the build-system check
* target. * target.