[cmake-developers] [CMake 0014827]: Preprocessor definitions for x64 projects are not correct on Windows Platform.
Mantis Bug Tracker
mantis at public.kitware.com
Mon Mar 24 07:13:43 EDT 2014
The following issue has been SUBMITTED.
======================================================================
http://public.kitware.com/Bug/view.php?id=14827
======================================================================
Reported By: Vikas Pachisia
Assigned To:
======================================================================
Project: CMake
Issue ID: 14827
Category: Development
Reproducibility: always
Severity: major
Priority: high
Status: new
======================================================================
Date Submitted: 2014-03-24 07:13 EDT
Last Modified: 2014-03-24 07:13 EDT
======================================================================
Summary: Preprocessor definitions for x64 projects are not
correct on Windows Platform.
Description:
When trying to make a x64 windows project using CMake it always assigns the
platform defines as WIN32 while it should be assigning the platform define as
WIN64.
Steps to Reproduce:
1. Try to make a simple basic x64 project that will create a visual studio
solution file (.sln) file.
2. Open the solution file that contains the x64 project.
3. Check the Project Properties for C++ -> Preprocessor -> Preprocessor
Definitions
4. You can see WIN32 as the preprocessor defines where as it should be WIN64.
Additional Information:
The following change can fix this for most projects:
1. Open the CMake file:
C:\Program Files (x86)\CMake
2.8\share\cmake-2.8\Modules\Platform\Windows-MSVC.cmake
2. Search for the code:
if(MSVC_C_ARCHITECTURE_ID MATCHES 64 OR MSVC_CXX_ARCHITECTURE_ID MATCHES 64)
set(CMAKE_CL_64 1)
else()
set(CMAKE_CL_64 0)
endif()
if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64)
set(CMAKE_CL_64 1)
endif()
3. Add the following new code after the end if mentioned above:
if(CMAKE_CL_64)
set(WIN64 1)
else()
set(WIN32 1)
endif()
4. Search for 'set(_PLATFORM_DEFINES "/DWIN32")'
5. Replace the above line with the following code:
if(CMAKE_CL_64)
set(_PLATFORM_DEFINES "/DWIN64")
else()
set(_PLATFORM_DEFINES "/DWIN32")
endif()
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2014-03-24 07:13 Vikas Pachisia New Issue
2014-03-24 07:13 Vikas Pachisia File Added: Windows-MSVC.cmake
======================================================================
More information about the cmake-developers
mailing list