|
|
|
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(RerunRccConfigChange)
|
|
|
|
include("../AutogenCoreTest.cmake")
|
|
|
|
|
|
|
|
# Tests rcc rebuilding after a configuration change
|
|
|
|
|
|
|
|
# Dummy executable to generate a clean target
|
|
|
|
add_executable(dummy dummy.cpp)
|
|
|
|
|
|
|
|
# When a .qrc or a file listed in a .qrc file changes,
|
|
|
|
# the target must be rebuilt
|
|
|
|
set(rccDepSD "${CMAKE_CURRENT_SOURCE_DIR}/RccConfigChange")
|
|
|
|
set(rccDepBD "${CMAKE_CURRENT_BINARY_DIR}/RccConfigChange")
|
|
|
|
|
|
|
|
# Rebuild macro
|
|
|
|
macro(rebuild CFG)
|
|
|
|
message(STATUS "Rebuilding rccConfigChange in ${CFG} configuration.")
|
|
|
|
execute_process(
|
|
|
|
COMMAND "${CMAKE_COMMAND}" --build . --config "${CFG}"
|
|
|
|
WORKING_DIRECTORY "${rccDepBD}"
|
|
|
|
RESULT_VARIABLE result)
|
|
|
|
if (result)
|
|
|
|
message(FATAL_ERROR "${CFG} build of rccConfigChange failed.")
|
|
|
|
else()
|
|
|
|
message(STATUS "${CFG} build of rccConfigChange finished.")
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
# Initial build
|
|
|
|
try_compile(RCC_DEPENDS
|
|
|
|
"${rccDepBD}"
|
|
|
|
"${rccDepSD}"
|
|
|
|
RccConfigChange
|
|
|
|
CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
|
|
|
|
"-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
|
|
|
|
"-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
|
|
|
|
"-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
|
|
|
|
OUTPUT_VARIABLE output
|
|
|
|
)
|
|
|
|
if (NOT RCC_DEPENDS)
|
|
|
|
message(FATAL_ERROR "Initial build of rccConfigChange failed. Output: ${output}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Rebuild: Release
|
|
|
|
rebuild(Release)
|
|
|
|
|
|
|
|
# Rebuild: Debug
|
|
|
|
rebuild(Debug)
|