From 3553001bcc425dfb5d84a2dc8d657fe92c007962 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 22 Aug 2012 08:33:12 -0400 Subject: [PATCH] Qt4Macros: Fix recently broken resource file parsing Commit 4be67837 (read less from version headers into variables, 2012-08-19) switched from file(READ) and string(REGEX MATCHALL) to just file(STRINGS) to extract the list of resource entries. However, the latter extracts entire lines that match the regex, not just the part that matches the regex, so the subsequent string(REGEX REPLACE) fails to match and replace anything. Return to the original parsing logic but replace file(READ) with file(STRINGS) to load a minimal part of the file before using string(REGEX MATCHALL) as before. --- Modules/Qt4Macros.cmake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Modules/Qt4Macros.cmake b/Modules/Qt4Macros.cmake index 95a2176c8..6cf16fdd5 100644 --- a/Modules/Qt4Macros.cmake +++ b/Modules/Qt4Macros.cmake @@ -187,15 +187,17 @@ macro (QT4_ADD_RESOURCES outfiles ) if(EXISTS "${infile}") # parse file for dependencies # all files are absolute paths or relative to the location of the qrc file - file(STRINGS "${infile}" _RC_FILES REGEX "]*>[^<]+") - foreach(_RC_FILE IN LISTS _RC_FILES) - string(REGEX REPLACE "^]*>([^<]*)" "\\1" _RC_FILE "${_RC_FILE}") + file(STRINGS "${infile}" _RC_FILE_CONTENTS REGEX "]*>[^<]+") + string(REGEX MATCHALL "]*>" "" _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() unset(_RC_FILES) + unset(_RC_FILE_CONTENTS) # 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.