CMake: qt_add_ui: Add sources to target_sources
* Add a new test combining with qt_add_resources * Remove redundant ADDITIONAL_ARGS string modification * Correct comments Pick-to: 6.8 Change-Id: I9b76a4d01705be3d80cc6386fbadb0b6f706a537 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
d39441a2eb
commit
442cac6dd4
@ -164,6 +164,8 @@ function(qt6_add_ui target)
|
||||
set(prefix_info_file_cmake_exists false)
|
||||
endif()
|
||||
|
||||
target_sources(${target} PRIVATE ${sources})
|
||||
|
||||
foreach(source_file ${sources})
|
||||
get_filename_component(outfile "${source_file}" NAME_WE)
|
||||
get_filename_component(infile "${source_file}" ABSOLUTE)
|
||||
|
@ -462,5 +462,6 @@ if(NOT QNX AND NOT WASM AND NOT (WIN32 AND QT_BUILD_MINIMAL_STATIC_TESTS)
|
||||
_qt_internal_test_expect_pass(test_qt_add_ui_8)
|
||||
_qt_internal_test_expect_pass(test_qt_add_ui_9)
|
||||
_qt_internal_test_expect_pass(test_qt_add_ui_10)
|
||||
_qt_internal_test_expect_pass(test_qt_add_ui_11)
|
||||
endif()
|
||||
|
||||
|
66
tests/auto/cmake/test_qt_add_ui_11/CMakeLists.txt
Normal file
66
tests/auto/cmake/test_qt_add_ui_11/CMakeLists.txt
Normal file
@ -0,0 +1,66 @@
|
||||
# Copyright (C) 2024 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(test)
|
||||
|
||||
include(../test_qt_add_ui_common/RunCMake.cmake)
|
||||
include(../test_qt_add_ui_common/functions.cmake)
|
||||
|
||||
get_generators(generators)
|
||||
|
||||
foreach(generator IN ITEMS ${generators})
|
||||
message(STATUS "Running tests for generator: ${generator}")
|
||||
is_multi_config(${generator} multi_config_out)
|
||||
# A CI test fails with the below condition. So, we are running the test
|
||||
# only for the Debug configuration.
|
||||
if ("${generator}" MATCHES "Xcode" AND
|
||||
CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
|
||||
set(configs "Debug")
|
||||
elseif(multi_config_out)
|
||||
set(configs "Debug" "Release")
|
||||
else()
|
||||
set(configs "single_config")
|
||||
endif()
|
||||
|
||||
foreach(config IN ITEMS ${configs})
|
||||
if("${config}" STREQUAL "single_config")
|
||||
set(config_path "")
|
||||
set(config_arg "")
|
||||
else()
|
||||
set(config_path "_${config}")
|
||||
set(config_arg "${config}")
|
||||
endif()
|
||||
|
||||
# Test case: ui_mainwindow.h is included as
|
||||
# "../../../../src/ui_files/ui_mainwindow.h".
|
||||
# Test case: mainwindow.ui file is touched after the first build.
|
||||
# Test case: mainwindow.ui is also passed to qt_add_resources.
|
||||
# Expect 1: Successful build without the double build issue.
|
||||
# Expect 2: No build folder leakage and generation of the "_/_/_/_/"
|
||||
# folder in ${hash_folder}/include.
|
||||
string(CONCAT test_ui_file "${CMAKE_CURRENT_SOURCE_DIR}/../test_qt_add_ui_"
|
||||
"common/uic_test/mainwindow.ui")
|
||||
generate_hash_folder("example" "${test_ui_file}" hash_folder)
|
||||
string(CONCAT test_build_dir "${CMAKE_CURRENT_BINARY_DIR}/UicBuildLeak_"
|
||||
"subFolderGen${config_path}-build")
|
||||
string(CONCAT test_file_to_touch "${CMAKE_CURRENT_SOURCE_DIR}/../"
|
||||
"test_qt_add_ui_common/uic_test/mainwindow.ui")
|
||||
string(CONCAT test_file_to_check "${test_build_dir}/.qt/${hash_folder}/"
|
||||
"${config_arg}/src/ui_files/ui_mainwindow.h")
|
||||
incremental_build_test(
|
||||
TEST_NAME uic_with_rcc
|
||||
SOURCE_DIR
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../test_qt_add_ui_common/uic_test"
|
||||
BUILD_DIR "${test_build_dir}"
|
||||
CONFIG "${config_arg}"
|
||||
GENERATOR "${generator}"
|
||||
ADDITIONAL_ARGS "-DMAINWINDOW_UI_PATH=../../../../src/ui_files/"
|
||||
"-DTEST_WITH_QRC=ON"
|
||||
FILE_TO_TOUCH "${test_file_to_touch}"
|
||||
FILE_TO_CHECK "${test_file_to_check}"
|
||||
FOLDER_TO_CHECK
|
||||
"${test_build_dir}/.qt/${hash_folder}/${config_arg}/_/_/_/_"
|
||||
)
|
||||
endforeach()
|
||||
endforeach()
|
@ -34,7 +34,7 @@ foreach(generator IN ITEMS ${generators})
|
||||
|
||||
# Test case: ui_mainwindow.h is included as
|
||||
# "../../../../src/ui_files/ui_mainwindow.h".
|
||||
# Test case: mainwindow1.ui file is touched after the first build.
|
||||
# Test case: mainwindow.ui file is touched after the first build.
|
||||
# Expect 1: Successful build without the double build issue.
|
||||
# Expect 2: No build folder leakage and generation of the "_/_/_/_/"
|
||||
# folder in ${hash_folder}/include.
|
||||
|
@ -34,7 +34,7 @@ foreach(generator IN ITEMS ${generators})
|
||||
|
||||
# Test case: ui_mainwindow.h is included as
|
||||
# "sub1/sub2/sub3/../../../../../../../../../../../../../ui_mainwindow.h".
|
||||
# Test case: mainwindow1.ui file is touched after the first build.
|
||||
# Test case: mainwindow.ui file is touched after the first build.
|
||||
# Expect 1: Successful build without the double build issue.
|
||||
# Expect 2: No build folder leakage and generation of the
|
||||
# "_/_/_/_/_/_/_/_/_/_/sub1/sub2/sub3" folder in ${hash_folder}/include.
|
||||
|
@ -96,7 +96,6 @@ function(incremental_build_test)
|
||||
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}"
|
||||
${ARGN})
|
||||
|
||||
string(REPLACE ";" " " arg_ADDITIONAL_ARGS "${arg_ADDITIONAL_ARGS}")
|
||||
if ("${arg_SOURCE_DIR}" STREQUAL "")
|
||||
message(FATAL_ERROR "FAIL: \"${arg_TEST_NAME}\" test failed because "
|
||||
"SOURCE_DIR is empty")
|
||||
|
@ -63,3 +63,7 @@ if (CMAKE_AUTOUIC)
|
||||
set_property(TARGET example PROPERTY AUTOUIC ON)
|
||||
endif()
|
||||
|
||||
|
||||
if (TEST_WITH_QRC)
|
||||
qt_add_resources(example "example.qrc" FILES "mainwindow.ui")
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user