12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- if(NOT DEFINED CMake_SOURCE_DIR)
- message(FATAL_ERROR "CMake_SOURCE_DIR not defined")
- endif()
- if(NOT DEFINED dir)
- message(FATAL_ERROR "dir not defined")
- endif()
- # Analyze 'cmake --help' output for list of available generators:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${dir})
- execute_process(COMMAND ${CMAKE_COMMAND} -E capabilities
- RESULT_VARIABLE result
- OUTPUT_VARIABLE stdout
- ERROR_VARIABLE stderr
- WORKING_DIRECTORY ${dir})
- set(generators)
- string(REGEX MATCHALL [["name":"[^"]+","platformSupport"]] generators_json "${stdout}")
- foreach(gen_json IN LISTS generators_json)
- if("${gen_json}" MATCHES [["name":"([^"]+)"]])
- set(gen "${CMAKE_MATCH_1}")
- if(NOT gen MATCHES " (Win64|IA64|ARM)$")
- list(APPEND generators "${gen}")
- endif()
- endif()
- endforeach()
- list(REMOVE_DUPLICATES generators)
- # Also call with one non-existent generator:
- #
- set(generators ${generators} "BOGUS_CMAKE_GENERATOR")
- # Call cmake with -G on each available generator. We do not care if this
- # succeeds or not. We expect it *not* to succeed if the underlying packaging
- # tools are not installed on the system... This test is here simply to add
- # coverage for the various cmake generators, even/especially to test ones
- # where the tools are not installed.
- #
- message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
- message(STATUS "CMake generators='${generators}'")
- # First setup a source tree to run CMake on.
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
- ${CMake_SOURCE_DIR}/Tests/CTestTest/SmallAndFast
- ${dir}/Source
- )
- foreach(g ${generators})
- message(STATUS "cmake -G \"${g}\" ..")
- # Create a binary directory for each generator:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory
- ${dir}/Source/${g}
- )
- # Run cmake:
- #
- execute_process(COMMAND ${CMAKE_COMMAND} -G ${g} ..
- RESULT_VARIABLE result
- OUTPUT_VARIABLE stdout
- ERROR_VARIABLE stderr
- WORKING_DIRECTORY ${dir}/Source/${g}
- )
- message(STATUS "result='${result}'")
- message(STATUS "stdout='${stdout}'")
- message(STATUS "stderr='${stderr}'")
- message(STATUS "")
- endforeach()
- message(STATUS "CMake generators='${generators}'")
- message(STATUS "CMAKE_COMMAND='${CMAKE_COMMAND}'")
|