| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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"
- )
|