我有一個使用cmake的一個項目,一個目標被設定爲只與MSVC建設:如何檢測64位MSVC與cmake?
if (MSVC)
add_library(test SHARED source.cpp)
endif()
現在的另一個問題是,這個目標是專爲32位MSVC。那麼如何檢測生成器是MSVC64並跳過此目標?
我有一個使用cmake的一個項目,一個目標被設定爲只與MSVC建設:如何檢測64位MSVC與cmake?
if (MSVC)
add_library(test SHARED source.cpp)
endif()
現在的另一個問題是,這個目標是專爲32位MSVC。那麼如何檢測生成器是MSVC64並跳過此目標?
有幾種方法 - 也被CMake的本身 - 這將檢查 「沒有64位」:
if(NOT "${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
...
endif()
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
...
endif()
if(NOT CMAKE_CL_64)
...
endif()
參考
通常的方法來檢查,如果你生成一個64位架構是測試CMAKE_SIZEOF_VOID_P:
如果(NOT 「$ {} CMAKE_GENERATOR」 匹配 「(Win64平臺| IA64)」)if(CMAKE_SIZEOF_VOID_P EQUAL 8)
# 64 bits
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
# 32 bits
endif()
我結束了使用CMAKE_GENERATOR方法 – paulm
似乎是我後,我沒有嘗試CMAKE_SIZEOF_VOID_P,但我想這也應該工作 – paulm
第一種方法不適合我在Qt Creator中工作。 'CMAKE_GENERATOR'等於'NMake Makefiles'。但是,'CMAKE_SIZEOF_VOID_P'看起來不錯。 – Melebius