summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/Qt5CoreMacros.cmake40
-rw-r--r--tests/auto/cmake/CMakeLists.txt1
-rw-r--r--tests/auto/cmake/pass11/CMakeLists.txt24
-rw-r--r--tests/auto/cmake/pass11/main.cpp49
-rw-r--r--tests/auto/cmake/pass11/resource_file.txt1
5 files changed, 99 insertions, 16 deletions
diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
index cbd141aeb3..9d5f85a441 100644
--- a/src/corelib/Qt5CoreMacros.cmake
+++ b/src/corelib/Qt5CoreMacros.cmake
@@ -176,23 +176,31 @@ function(QT5_ADD_RESOURCES outfiles )
get_filename_component(infile ${it} ABSOLUTE)
get_filename_component(rc_path ${infile} PATH)
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cxx)
- # parse file for dependencies
- # all files are absolute paths or relative to the location of the qrc file
- file(READ "${infile}" _RC_FILE_CONTENTS)
- string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}")
+
set(_RC_DEPENDS)
- foreach(_RC_FILE ${_RC_FILES})
- string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}")
- if(NOT IS_ABSOLUTE "${_RC_FILE}")
- set(_RC_FILE "${rc_path}/${_RC_FILE}")
- endif()
- set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}")
- endforeach()
- # Since this cmake function is doing the dependency scanning for these files,
- # let's make a configured file and add it as a dependency so cmake is run
- # again when dependencies need to be recomputed.
- qt5_make_output_file("${infile}" "" "qrc.depends" out_depends)
- configure_file("${infile}" "${out_depends}" COPY_ONLY)
+ if(EXISTS "${infile}")
+ # parse file for dependencies
+ # all files are absolute paths or relative to the location of the qrc file
+ file(READ "${infile}" _RC_FILE_CONTENTS)
+ string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}")
+ foreach(_RC_FILE ${_RC_FILES})
+ string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}")
+ if(NOT IS_ABSOLUTE "${_RC_FILE}")
+ set(_RC_FILE "${rc_path}/${_RC_FILE}")
+ endif()
+ set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}")
+ endforeach()
+ # Since this cmake macro is doing the dependency scanning for these files,
+ # let's make a configured file and add it as a dependency so cmake is run
+ # again when dependencies need to be recomputed.
+ qt5_make_output_file("${infile}" "" "qrc.depends" out_depends)
+ configure_file("${infile}" "${out_depends}" COPY_ONLY)
+ else()
+ # The .qrc file does not exist (yet). Let's add a dependency and hope
+ # that it will be generated later
+ set(out_depends)
+ endif()
+
add_custom_command(OUTPUT ${outfile}
COMMAND ${QT_RCC_EXECUTABLE}
ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile}
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index 40ceea1fc0..d8c41821a4 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -98,3 +98,4 @@ if (Qt5DBus_FOUND AND NOT APPLE)
expect_pass(pass9)
endif()
expect_pass(pass10)
+expect_pass(pass11)
diff --git a/tests/auto/cmake/pass11/CMakeLists.txt b/tests/auto/cmake/pass11/CMakeLists.txt
new file mode 100644
index 0000000000..0e9d028396
--- /dev/null
+++ b/tests/auto/cmake/pass11/CMakeLists.txt
@@ -0,0 +1,24 @@
+
+cmake_minimum_required(VERSION 2.8)
+
+project(pass11)
+
+find_package(Qt5Core REQUIRED)
+
+include_directories(${Qt5Core_INCLUDE_DIRS})
+
+add_definitions(${Qt5Core_DEFINITIONS})
+
+qt5_add_resources(rcc_files "${CMAKE_CURRENT_BINARY_DIR}/pass11.qrc")
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/pass11.qrc" "<!DOCTYPE RCC><RCC version=\"1.0\">
+<qresource prefix=\"/\">
+ <file>${CMAKE_CURRENT_SOURCE_DIR}/resource_file.txt</file>
+</qresource>
+</RCC>
+")
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
+
+add_executable(pass11 main.cpp ${rcc_files})
+target_link_libraries(pass11 ${Qt5Core_LIBRARIES})
diff --git a/tests/auto/cmake/pass11/main.cpp b/tests/auto/cmake/pass11/main.cpp
new file mode 100644
index 0000000000..2a43be419b
--- /dev/null
+++ b/tests/auto/cmake/pass11/main.cpp
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qglobal.h>
+
+int main(int argc, char **argv)
+{
+ // Compile error if the resource file was not created.
+ Q_INIT_RESOURCE(pass11);
+ return 0;
+}
diff --git a/tests/auto/cmake/pass11/resource_file.txt b/tests/auto/cmake/pass11/resource_file.txt
new file mode 100644
index 0000000000..2c604a4f18
--- /dev/null
+++ b/tests/auto/cmake/pass11/resource_file.txt
@@ -0,0 +1 @@
+Ken sent me.