| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- cmake_minimum_required(VERSION 3.17)
- project(RerunUicOnFileChange)
- include("../AutogenGuiTest.cmake")
- # Utility variables
- set(testProjectTemplateDir "${CMAKE_CURRENT_SOURCE_DIR}/UicOnFileChange")
- set(testProjectSrc "${CMAKE_CURRENT_BINARY_DIR}/UicOnFileChange")
- set(testProjectBinDir "${CMAKE_CURRENT_BINARY_DIR}/UicOnFileChange-build")
- set(TEST_CONFIG "Release")
- macro(sleep)
- message(STATUS "Sleeping for a few seconds.")
- execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1)
- endmacro()
- macro(rebuild buildName)
- message(STATUS "Starting build ${buildName}.")
- execute_process(COMMAND "${CMAKE_COMMAND}" --build . --config "${TEST_CONFIG}"
- WORKING_DIRECTORY "${testProjectBinDir}" RESULT_VARIABLE result
- )
- if (result)
- message(FATAL_ERROR "Build ${buildName} failed.")
- else()
- message(STATUS "Build ${buildName} finished.")
- endif()
- endmacro()
- configure_file("${testProjectTemplateDir}/mocwidget.h" "${testProjectSrc}/mocwidget.h" COPYONLY)
- configure_file("${testProjectTemplateDir}/main.cpp" "${testProjectSrc}/main.cpp" COPYONLY)
- configure_file("${testProjectTemplateDir}/subdir/subdircheck.cpp" "${testProjectSrc}/subdir/subdircheck.cpp" COPYONLY)
- configure_file("${testProjectTemplateDir}/CMakeLists.txt.in" "${testProjectSrc}/CMakeLists.txt" @ONLY)
- set(Num 1)
- configure_file("${testProjectTemplateDir}/mainwindow.ui.in" "${testProjectSrc}/mainwindow.ui" @ONLY)
- configure_file("${testProjectTemplateDir}/subdir/mainwindowsubdir.ui.in" "${testProjectSrc}/subdir/mainwindowsubdir.ui" @ONLY)
- if(CMAKE_GENERATOR_INSTANCE)
- set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE=${CMAKE_GENERATOR_INSTANCE}")
- else()
- set(_D_CMAKE_GENERATOR_INSTANCE "")
- endif()
- get_property(is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
- if(is_multi)
- set(build_type_extra "-DCMAKE_CONFIGURATION_TYPES=${TEST_CONFIG}")
- set(extra_bin_path "${TEST_CONFIG}/")
- else()
- set(build_type_extra "-DCMAKE_BUILD_TYPE=${TEST_CONFIG}")
- endif()
- # Set the environment PATH/LD_LIBRARY_PATH variables to run the resulting executable
- if(WIN32 AND TARGET ${QT_QTCORE_TARGET})
- get_target_property(qtcore_path ${QT_QTCORE_TARGET} LOCATION)
- if(NOT qtcore_path)
- get_target_property(qtcore_path ${QT_QTCORE_TARGET} IMPORTED_LOCATION)
- endif()
- get_filename_component(qtcore_path "${qtcore_path}" DIRECTORY)
- set(ENV{PATH} "${qtcore_path};$ENV{PATH}")
- endif()
- execute_process(
- COMMAND "${CMAKE_COMMAND}" -B "${testProjectBinDir}" -S "${testProjectSrc}"
- -G "${CMAKE_GENERATOR}"
- -A "${CMAKE_GENERATOR_PLATFORM}"
- -T "${CMAKE_GENERATOR_TOOLSET}"
- ${_D_CMAKE_GENERATOR_INSTANCE}
- "${build_type_extra}"
- "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
- "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
- "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
- RESULT_VARIABLE exit_code
- OUTPUT_VARIABLE output
- ERROR_VARIABLE output
- )
- if(NOT exit_code EQUAL 0)
- message(FATAL_ERROR "Initial configuration of UicOnFileChange failed. Output: ${output}")
- endif()
- # Initial build
- execute_process(
- COMMAND "${CMAKE_COMMAND}" --build "${testProjectBinDir}" --config "${TEST_CONFIG}"
- RESULT_VARIABLE exit_code
- OUTPUT_VARIABLE output
- ERROR_VARIABLE output
- )
- if(NOT exit_code EQUAL 0)
- message(FATAL_ERROR "Initial build of UicOnFileChange failed. Output: ${output}")
- endif()
- execute_process(COMMAND "${testProjectBinDir}/${extra_bin_path}UicOnFileChange" RESULT_VARIABLE result)
- if(NOT result EQUAL "1")
- message(FATAL_ERROR "Initial build of UicOnFileChange test result is: ${result}")
- endif()
- sleep()
- set(Num 2)
- configure_file("${testProjectTemplateDir}/mainwindow.ui.in" "${testProjectSrc}/mainwindow.ui" @ONLY)
- configure_file("${testProjectTemplateDir}/subdir/mainwindowsubdir.ui.in" "${testProjectSrc}/subdir/mainwindowsubdir.ui" @ONLY)
- rebuild(2)
- execute_process(COMMAND "${testProjectBinDir}/${extra_bin_path}UicOnFileChange" RESULT_VARIABLE result)
- if(NOT result EQUAL "0")
- message(FATAL_ERROR "Rebuild of UicOnFileChange test result is: ${result}")
- endif()
|