|
@@ -0,0 +1,102 @@
|
|
|
+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}/CMakeLists.txt.in" "${testProjectSrc}/CMakeLists.txt" @ONLY)
|
|
|
+
|
|
|
+set(Num 1)
|
|
|
+configure_file("${testProjectTemplateDir}/mainwindow.ui.in" "${testProjectSrc}/mainwindow.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)
|
|
|
+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()
|