From 7029ecade96876d08af7d576e0b81417502acbaa Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Mon, 20 May 2019 11:37:27 +0200 Subject: cmake: correct version dependency for qt5_add_big_resources qt5_add_big_resources is only available if using CMake 3.9 and later. This amends cdccd0222bbed1954d5d7fe0da9d2308c202f3b1. Task-number: QTBUG-55680 Task-number: QTBUG-75806 Change-Id: Ibba7af6ee7edfb226368937d543b7ec5cc93eb16 Reviewed-by: Alexandru Croitor Reviewed-by: Kai Koehne --- src/corelib/Qt5CoreMacros.cmake | 5 +++++ src/corelib/doc/src/cmake-macros.qdoc | 2 ++ tests/auto/cmake/CMakeLists.txt | 7 ++++++- tests/auto/cmake/test_add_big_resource/CMakeLists.txt | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake index 7ae5e4fd16..3a60b8e0d2 100644 --- a/src/corelib/Qt5CoreMacros.cmake +++ b/src/corelib/Qt5CoreMacros.cmake @@ -296,6 +296,9 @@ endfunction() # qt5_add_big_resources(outfiles inputfile ... ) function(QT5_ADD_BIG_RESOURCES outfiles ) + if (CMAKE_VERSION VERSION_LESS 3.9) + message(FATAL_ERROR, "qt5_add_big_resources requires CMake 3.9 or newer") + endif() set(options) set(oneValueArgs) @@ -326,6 +329,8 @@ function(QT5_ADD_BIG_RESOURCES outfiles ) set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOMOC OFF) set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOUIC OFF) add_dependencies(rcc_object_${outfilename} big_resources_${outfilename}) + # The modification of TARGET_OBJECTS needs the following change in cmake + # https://gitlab.kitware.com/cmake/cmake/commit/93c89bc75ceee599ba7c08b8fe1ac5104942054f add_custom_command(OUTPUT ${outfile} COMMAND ${Qt5Core_RCC_EXECUTABLE} ARGS ${rcc_options} --name ${outfilename} --pass 2 --temp $ --output ${outfile} ${infile} diff --git a/src/corelib/doc/src/cmake-macros.qdoc b/src/corelib/doc/src/cmake-macros.qdoc index 6140e8be44..7fb133020f 100644 --- a/src/corelib/doc/src/cmake-macros.qdoc +++ b/src/corelib/doc/src/cmake-macros.qdoc @@ -131,6 +131,8 @@ files (\c .o, \c .obj) files instead of C++ source code. This allows to embed bigger resources, where compiling to C++ sources and then to binaries would be too time consuming or memory intensive. +Note that this macro is only available if using \c{CMake} 3.9 or later. + \section1 Arguments You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls. diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt index 51d0d2879e..5b10a74d3f 100644 --- a/tests/auto/cmake/CMakeLists.txt +++ b/tests/auto/cmake/CMakeLists.txt @@ -146,7 +146,12 @@ endif() expect_pass(test_interface_link_libraries) expect_pass(test_moc_macro_target) -expect_pass(test_add_big_resource) + +if (NOT CMAKE_VERSION VERSION_LESS 3.9) + # The modification of TARGET_OBJECTS needs the following change in cmake + # https://gitlab.kitware.com/cmake/cmake/commit/93c89bc75ceee599ba7c08b8fe1ac5104942054f + expect_pass(test_add_big_resource) +endif() if (NOT CMAKE_VERSION VERSION_LESS 3.8) # With earlier CMake versions, this test would simply run moc multiple times and lead to: diff --git a/tests/auto/cmake/test_add_big_resource/CMakeLists.txt b/tests/auto/cmake/test_add_big_resource/CMakeLists.txt index f928b11278..45ed2c79d5 100644 --- a/tests/auto/cmake/test_add_big_resource/CMakeLists.txt +++ b/tests/auto/cmake/test_add_big_resource/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.9) project(test_add_big_resource) -- cgit v1.2.3