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:
parent
a056cb9595
commit
36b253eebd
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
#####################################################################
|
||||
|
|
|
@ -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:
|
||||
#####################################################################
|
||||
|
|
|
@ -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()
|
|
@ -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()
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue