Fix missing set of MSVC10 and add CheckCompilerRelatedVariables test.
This commit is contained in:
parent
d4c95316ee
commit
2938263636
|
@ -8,6 +8,7 @@ SET(MSVC70 @MSVC70@)
|
|||
SET(MSVC71 @MSVC71@)
|
||||
SET(MSVC80 @MSVC80@)
|
||||
SET(MSVC90 @MSVC90@)
|
||||
SET(MSVC10 @MSVC10@)
|
||||
SET(MSVC_IDE @MSVC_IDE@)
|
||||
SET(MSVC_VERSION @MSVC_VERSION@)
|
||||
SET(WIN32 1)
|
||||
|
|
|
@ -980,6 +980,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
|
|||
ADD_TEST_MACRO(ModuleDefinition example_exe)
|
||||
ENDIF(CMAKE_TEST_MSVC)
|
||||
|
||||
ADD_TEST_MACRO(CheckCompilerRelatedVariables CheckCompilerRelatedVariables)
|
||||
|
||||
IF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
|
||||
ADD_TEST(MakeClean ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
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()
|
||||
|
||||
echo_var(MSVC)
|
||||
echo_var(MSVC60)
|
||||
echo_var(MSVC70)
|
||||
echo_var(MSVC71)
|
||||
echo_var(MSVC80)
|
||||
echo_var(MSVC90)
|
||||
echo_var(MSVC10)
|
||||
|
||||
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"
|
||||
)
|
Loading…
Reference in New Issue