MantisBT - CMake
View Issue Details
0013896CMakeCMakepublic2013-02-07 12:332013-07-01 09:35
Leszek Swirski 
Brad King 
normalmajoralways
closedfixed 
MSVCWindows7
CMake 2.8.10.2 
CMake 2.8.11CMake 2.8.11 
0013896: CMAKE_CL_64 incorrectly set for CXX projects
CMAKE_CL_64 only checks the value of MSVC_C_ARCHITECTURE_ID, not MSVC_CXX_ARCHITECTURE_ID.

This means that CXX only projects [projects defined as project(x CXX)] and CXX-first projects [projects defined as project(x CXX C) rather than project(x C CXX)] do not correctly set CMAKE_CL_64 = 1 when MSVC_CXX_ARCHITECTURE_ID = x64
Using a Visual Studio x64 command shell, running cmake on:

    -- CMakeLists.txt
    project(test CXX)
    message("MSVC_CXX_ARCHITECTURE_ID = ${MSVC_CXX_ARCHITECTURE_ID}")
    message("CMAKE_CL_64 = ${CMAKE_CL_64}")

prints:

    MSVC_CXX_ARCHITECTURE_ID = x64
    CMAKE_CL_64 = 0

and

    -- CMakeLists.txt
    project(test CXX C)
    message("MSVC_C_ARCHITECTURE_ID = ${MSVC_C_ARCHITECTURE_ID}")
    message("MSVC_CXX_ARCHITECTURE_ID = ${MSVC_CXX_ARCHITECTURE_ID}")
    message("CMAKE_CL_64 = ${CMAKE_CL_64}")

prints:

    MSVC_C_ARCHITECTURE_ID = x64
    MSVC_CXX_ARCHITECTURE_ID = x64
    CMAKE_CL_64 = 0

while the following

    -- CMakeLists.txt
    project(test C CXX)
    message("MSVC_C_ARCHITECTURE_ID = ${MSVC_C_ARCHITECTURE_ID}")
    message("MSVC_CXX_ARCHITECTURE_ID = ${MSVC_CXX_ARCHITECTURE_ID}")
    message("CMAKE_CL_64 = ${CMAKE_CL_64}")

prints:

    MSVC_C_ARCHITECTURE_ID = x64
    MSVC_CXX_ARCHITECTURE_ID = x64
    CMAKE_CL_64 = 1
No tags attached.
Issue History
2013-02-07 12:33Leszek SwirskiNew Issue
2013-02-07 14:53Brad KingNote Added: 0032211
2013-02-07 14:54Leszek SwirskiNote Added: 0032212
2013-02-07 15:06Brad KingNote Added: 0032214
2013-02-07 15:06Brad KingAssigned To => Brad King
2013-02-07 15:06Brad KingStatusnew => resolved
2013-02-07 15:06Brad KingResolutionopen => fixed
2013-02-07 15:06Brad KingFixed in Version => CMake 2.8.11
2013-02-07 15:06Brad KingTarget Version => CMake 2.8.11
2013-07-01 09:35Robert MaynardNote Added: 0033414
2013-07-01 09:35Robert MaynardStatusresolved => closed

Notes
(0032211)
Brad King   
2013-02-07 14:53   
Try this patch:

diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake
index 3a38d8f..f9df6d8 100644
--- a/Modules/Platform/Windows-MSVC.cmake
+++ b/Modules/Platform/Windows-MSVC.cmake
@@ -107,7 +107,7 @@ if(NOT MSVC_VERSION)
   endif()
 endif()
 
-if(MSVC_C_ARCHITECTURE_ID MATCHES 64)
+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)
(0032212)
Leszek Swirski   
2013-02-07 14:54   
That's exactly the fix I actually applied on my machine, and it works.
(0032214)
Brad King   
2013-02-07 15:06   
Applied, thanks:

 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fe664b5d [^]
(0033414)
Robert Maynard   
2013-07-01 09:35   
Closing resolved issues that have not been updated in more than 4 months.