فهرست منبع

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.
Patrick Gansterer 13 سال پیش
والد
کامیت
d41d4d3d61
3فایلهای تغییر یافته به همراه16 افزوده شده و 6 حذف شده
  1. 7 6
      Modules/CMakeDetermineCompilerId.cmake
  2. 7 0
      Source/cmGlobalVisualStudio8Generator.cxx
  3. 2 0
      Source/cmGlobalVisualStudio8Generator.h

+ 7 - 6
Modules/CMakeDetermineCompilerId.cmake

@@ -107,11 +107,14 @@ Id flags: ${testflags}
 ")
 
   # 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_arch ${CMAKE_MATCH_4})
+    set(id_arch ${CMAKE_VS_PLATFORM_NAME})
     set(id_lang "${lang}")
     set(id_cl cl.exe)
+    if(NOT id_arch)
+      set(id_arch Win32)
+    endif()
     if(NOT "${vs_version}" VERSION_LESS 10)
       set(v 10)
       set(ext vcxproj)
@@ -123,16 +126,14 @@ Id flags: ${testflags}
       set(v 6)
       set(ext dsp)
     endif()
-    if("${vs_arch}" STREQUAL "Win64")
+    if("${id_arch}" STREQUAL "x64")
       set(id_machine_10 MachineX64)
-      set(id_arch x64)
-    elseif("${vs_arch}" STREQUAL "IA64")
+    elseif("${id_arch}" STREQUAL "Itanium")
       set(id_machine_10 MachineIA64)
       set(id_arch ia64)
     else()
       set(id_machine_6 x86)
       set(id_machine_10 MachineX86)
-      set(id_arch Win32)
     endif()
     if(CMAKE_VS_PLATFORM_TOOLSET)
       set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")

+ 7 - 0
Source/cmGlobalVisualStudio8Generator.cxx

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

+ 2 - 0
Source/cmGlobalVisualStudio8Generator.h

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