3b5256e19e
Teach the CheckCompilerRelatedVariables test to verify MSVC11. Update the special cases already in the Preprocess and VSExternalInclude tests for VS 10 to work for VS 11 too.
91 lines
2.0 KiB
CMake
91 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
project(CheckCompilerRelatedVariables)
|
|
|
|
|
|
function(echo_var var)
|
|
if(DEFINED ${var})
|
|
message("${var}='${${var}}' is defined")
|
|
else()
|
|
message("${var}='${${var}}' is NOT defined")
|
|
endif()
|
|
endfunction()
|
|
|
|
|
|
#
|
|
# Check that the correct number of MSVC** variables are defined...
|
|
#
|
|
set(msvc_total 0)
|
|
|
|
if(DEFINED MSVC60)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC70)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC71)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC80)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC90)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC10)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
if(DEFINED MSVC11)
|
|
math(EXPR msvc_total "${msvc_total} + 1")
|
|
endif()
|
|
|
|
echo_var(MSVC)
|
|
echo_var(MSVC60)
|
|
echo_var(MSVC70)
|
|
echo_var(MSVC71)
|
|
echo_var(MSVC80)
|
|
echo_var(MSVC90)
|
|
echo_var(MSVC10)
|
|
echo_var(MSVC11)
|
|
|
|
if(MSVC)
|
|
#
|
|
# MSVC is set in cl.cmake when cl is the compiler...
|
|
#
|
|
# Exactly one of the numbered variables should also be set
|
|
# indicating which version of the cl compiler / Visual Studio
|
|
# is in use...
|
|
#
|
|
if(msvc_total EQUAL 1)
|
|
message("test passes: exactly one MSVC** variable is defined...")
|
|
else()
|
|
message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 1 expected")
|
|
endif()
|
|
else()
|
|
#
|
|
# The compiler is something other than cl... None of the MSVC** variables
|
|
# should be defined...
|
|
#
|
|
if(msvc_total EQUAL 0)
|
|
message("test passes: no MSVC** variables are defined on non-MSVC build...")
|
|
else()
|
|
message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 0 expected")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
#
|
|
# This is a no-op executable... If this test is going to fail, it fails during
|
|
# the configure step while cmake is configuring this CMakeLists.txt file...
|
|
#
|
|
|
|
file(WRITE
|
|
"${CMAKE_CURRENT_BINARY_DIR}/main.cxx"
|
|
"int main() { return 0; }
|
|
"
|
|
)
|
|
|
|
add_executable(
|
|
CheckCompilerRelatedVariables
|
|
"${CMAKE_CURRENT_BINARY_DIR}/main.cxx"
|
|
)
|