CMake/Tests/CheckCompilerRelatedVariables/CMakeLists.txt
Brad King 77ac9b8b9c VS12: Add Visual Studio 12 generator (#14251)
Copy cmGlobalVisualStudio11Generator to cmGlobalVisualStudio12Generator
and update version numbers accordingly.  Add the VS12 enumeration value.
Add module CMakeVS12FindMake to find MSBuild.  Look for MSBuild in its
now-dedicated Windows Registry entry.  Teach the platform module
Windows-MSVC to set MSVC12 and document the variable.  Teach module
InstallRequiredSystemLibraries to look for the VS 12 runtime libraries.

Teach tests CheckCompilerRelatedVariables, Preprocess, VSExternalInclude,
and RunCMake.GeneratorToolset to treat VS 12 as they do VS 10 and 11.

Inspired-by: Minmin Gong <minmin.gong@gmail.com>
2013-06-28 18:13:14 -04:00

106 lines
2.6 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()
if(DEFINED MSVC12)
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)
echo_var(MSVC12)
echo_var(MSVC_IDE)
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()
if(NOT DEFINED MSVC_IDE)
message(FATAL_ERROR "MSVC_IDE not defined but should be!")
elseif("${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND NOT MSVC_IDE)
message(FATAL_ERROR "MSVC_IDE is not true but should be (${CMAKE_GENERATOR})!")
elseif(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND MSVC_IDE)
message(FATAL_ERROR "MSVC_IDE is true but should not be (${CMAKE_GENERATOR})!")
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()
if(DEFINED MSVC_IDE)
message(FATAL_ERROR "MSVC_IDE is defined but should not be!")
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"
)