Prepare Qt5QuickCompiler.cmake.in for Qt6

Increment all the version numbers. Replace
qtquick_compiler_add_resources with a warning and a call to
qt6_add_resources.

Task-number: QTBUG-85190
Change-Id: Ifed5449ab4d6312a57add870eee13175872146db
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Ulf Hermann 2020-07-03 15:45:41 +02:00
parent a056cb9595
commit 36b253eebd
6 changed files with 23 additions and 103 deletions

View File

@ -2,16 +2,16 @@
cmake_minimum_required(VERSION 2.8)
project(qqc_test)
find_package(Qt5Qml 5.0.0 REQUIRED)
find_package(Qt5Gui 5.0.0 REQUIRED)
find_package(Qt5Test 5.0.0 REQUIRED)
find_package(Qt5QuickCompiler)
find_package(Qt6Qml 6.0.0 REQUIRED)
find_package(Qt6Gui 6.0.0 REQUIRED)
find_package(Qt6Test 6.0.0 REQUIRED)
find_package(Qt6QuickCompiler)
set(CMAKE_CXXFLAGS "${CMAKE_CXXFLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_CXXFLAGS "${CMAKE_CXXFLAGS} ${Qt6Core_EXECUTABLE_COMPILE_FLAGS}")
qtquick_compiler_add_resources(RESOURCES "empty.qrc" "resources with space/qqc_test.qrc")
set(CMAKE_AUTOMOC ON)
add_executable(qqc_test "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" ${RESOURCES})
target_link_libraries(qqc_test Qt5::Gui Qt5::Qml Qt5::Test)
target_link_libraries(qqc_test Qt6::Gui Qt6::Qml Qt6::Test)

View File

@ -4,7 +4,8 @@
## qmlcachegen Tool:
#####################################################################
qt_add_tool(qmlcachegen
qt_get_tool_target_name(target_name qmlcachegen)
qt_add_tool(${target_name}
TARGET_DESCRIPTION "QML Cache Generator"
SOURCES
../shared/resourcefilemapper.cpp ../shared/resourcefilemapper.h
@ -28,9 +29,9 @@ qt_add_tool(qmlcachegen
# build_integration.files = "qmlcache.prf" "qtquickcompiler.prf"
# build_integration.path = "$$[QT_HOST_DATA]/mkspecs/features"
# cmake_build_integration.files = "$$cmake_config_file.output"
# cmake_build_integration.path = "$$[QT_INSTALL_LIBS]/cmake/Qt5QuickCompiler"
# cmake_config_file.input = "$$PWD/Qt5QuickCompilerConfig.cmake.in"
# cmake_config_file.output = "$$MODULE_BASE_OUTDIR/lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake"
# cmake_build_integration.path = "$$[QT_INSTALL_LIBS]/cmake/Qt6QuickCompiler"
# cmake_config_file.input = "$$PWD/Qt6QuickCompilerConfig.cmake.in"
# cmake_config_file.output = "$$MODULE_BASE_OUTDIR/lib/cmake/Qt6QuickCompiler/Qt6QuickCompilerConfig.cmake"
## Scopes:
#####################################################################

View File

@ -4,7 +4,8 @@
## qmlcachegen Tool:
#####################################################################
qt_add_tool(qmlcachegen
qt_get_tool_target_name(target_name qmlcachegen)
qt_add_tool(${target_name}
TARGET_DESCRIPTION "QML Cache Generator"
TOOLS_TARGET Qml # special case
SOURCES
@ -29,9 +30,9 @@ qt_add_tool(qmlcachegen
# build_integration.files = "qmlcache.prf" "qtquickcompiler.prf"
# build_integration.path = "$$[QT_HOST_DATA]/mkspecs/features"
# cmake_build_integration.files = "$$cmake_config_file.output"
# cmake_build_integration.path = "$$[QT_INSTALL_LIBS]/cmake/Qt5QuickCompiler"
# cmake_config_file.input = "$$PWD/Qt5QuickCompilerConfig.cmake.in"
# cmake_config_file.output = "$$MODULE_BASE_OUTDIR/lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake"
# cmake_build_integration.path = "$$[QT_INSTALL_LIBS]/cmake/Qt6QuickCompiler"
# cmake_config_file.input = "$$PWD/Qt6QuickCompilerConfig.cmake.in"
# cmake_config_file.output = "$$MODULE_BASE_OUTDIR/lib/cmake/Qt6QuickCompiler/Qt6QuickCompilerConfig.cmake"
## Scopes:
#####################################################################

View File

@ -1,86 +0,0 @@
include(CMakeParseArguments)
function(QTQUICK_COMPILER_DETERMINE_OUTPUT_FILENAME outvariable filename)
file(RELATIVE_PATH relpath ${CMAKE_CURRENT_SOURCE_DIR} ${filename})
string(REPLACE \".qml\" \"_qml\" relpath ${relpath})
string(REPLACE \".js\" \"_js\" relpath ${relpath})
string(REPLACE \".mjs\" \"_mjs\" relpath ${relpath})
string(REPLACE \"/\" \"_\" relpath ${relpath})
set(${outvariable} ${CMAKE_CURRENT_BINARY_DIR}/${relpath}.cpp PARENT_SCOPE)
endfunction()
function(QTQUICK_COMPILER_ADD_RESOURCES outfiles)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
cmake_parse_arguments(_RCC \"${options}\" \"${oneValueArgs}\" \"${multiValueArgs}\" ${ARGN})
find_package(Qt5 COMPONENTS Qml Core)
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
set(compiler_path \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmlcachegen$$CMAKE_BIN_SUFFIX\")
!!ELSE
set(compiler_path \"$${CMAKE_BIN_DIR}qmlcachegen$$CMAKE_BIN_SUFFIX\")
!!ENDIF
if(NOT EXISTS \"${compiler_path}\" )
message(FATAL_ERROR \"The package \\\"Qt5QuickCompilerConfig\\\" references the file
\\\"${compiler_path}\\\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\\\"${CMAKE_CURRENT_LIST_FILE}\\\"
but not all the files it references.
\")
endif()
get_target_property(rcc_path ${Qt5Core_RCC_EXECUTABLE} IMPORTED_LOCATION)
set(rcc_files ${_RCC_UNPARSED_ARGUMENTS})
set(rcc_options ${_RCC_OPTIONS})
set(filtered_rcc_files)
set(compiler_output)
set(rcc_files_with_compilation_units)
set(loader_flags)
foreach(_resource ${rcc_files})
get_filename_component(resource_base ${_resource} NAME_WE)
set(new_resource_file ${CMAKE_CURRENT_BINARY_DIR}/${resource_base}_qmlcache.qrc)
get_filename_component(input_resource ${_resource} ABSOLUTE)
execute_process(COMMAND ${compiler_path} --filter-resource-file ${input_resource} -o ${new_resource_file} OUTPUT_VARIABLE remaining_files)
list(APPEND filtered_rcc_files ${new_resource_file})
list(APPEND loader_flags \"--resource-file-mapping=${_resource}=${new_resource_file}\")
set(rcc_file_with_compilation_units)
execute_process(COMMAND ${rcc_path} -list \"${input_resource}\" OUTPUT_VARIABLE rcc_contents)
if (NOT rcc_contents STREQUAL \"\")
string(REGEX REPLACE \"[\r\n]+\" \";\" rcc_contents ${rcc_contents})
foreach(it ${rcc_contents})
get_filename_component(extension ${it} EXT)
if(extension STREQUAL \".qml\" OR extension STREQUAL \".js\" OR extension STREQUAL \".ui.qml\" OR extension STREQUAL \".mjs\")
qtquick_compiler_determine_output_filename(output_file ${it})
add_custom_command(OUTPUT ${output_file} COMMAND ${compiler_path} ARGS --resource=${input_resource} ${it} -o ${output_file} DEPENDS ${it})
list(APPEND compiler_output ${output_file})
set(rcc_file_with_compilation_units ${input_resource})
endif()
endforeach()
endif()
if(rcc_file_with_compilation_units)
list(APPEND rcc_files_with_compilation_units ${rcc_file_with_compilation_units})
endif()
endforeach()
if(rcc_files_with_compilation_units)
set(loader_source ${CMAKE_CURRENT_BINARY_DIR}/qmlcache_loader.cpp)
add_custom_command(OUTPUT ${loader_source} COMMAND ${compiler_path} ARGS ${loader_flags} ${rcc_files_with_compilation_units} -o ${loader_source} DEPENDS ${rcc_files_with_compilation_units})
list(APPEND compiler_output ${loader_source})
endif()
qt5_add_resources(output_resources ${filtered_rcc_files} OPTIONS ${options})
set(${outfiles} ${output_resources} ${compiler_output} PARENT_SCOPE)
endfunction()

View File

@ -0,0 +1,4 @@
function(QTQUICK_COMPILER_ADD_RESOURCES)
message(WARNING "Use qt6_add_resources instead of qtquick_compiler_add_resources."
"QML and JavaScript files are automatically compiled then.")
endfunction()

View File

@ -32,12 +32,12 @@ contains(CMAKE_BIN_DIR, "^\\.\\./.*") {
load(qt_build_paths)
equals(QMAKE_HOST.os, Windows): CMAKE_BIN_SUFFIX = ".exe"
cmake_config_file.input = $$PWD/Qt5QuickCompilerConfig.cmake.in
cmake_config_file.output = $$MODULE_BASE_OUTDIR/lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake
cmake_config_file.input = $$PWD/Qt6QuickCompilerConfig.cmake.in
cmake_config_file.output = $$MODULE_BASE_OUTDIR/lib/cmake/Qt6QuickCompiler/Qt6QuickCompilerConfig.cmake
QMAKE_SUBSTITUTES += cmake_config_file
cmake_build_integration.files = $$cmake_config_file.output
cmake_build_integration.path = $$[QT_INSTALL_LIBS]/cmake/Qt5QuickCompiler
cmake_build_integration.path = $$[QT_INSTALL_LIBS]/cmake/Qt6QuickCompiler
prefix_build: INSTALLS += cmake_build_integration
else: COPIES += cmake_build_integration