From 95e548eeaac3f498920351cb5ec9acba48e2a63e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 7 Oct 2012 10:42:36 +0200 Subject: [PATCH] Generate ';' separated libraries in prl files for CMake. The generated CMake files need to pass ';' separated libraries to the IMPORTED_LINK_INTERFACE_LIBRARIES property, otherwise we get errors such as this: http://testresults.qt-project.org/ci/QtTools_master_Integration/build_00386/win32-msvc2010_Windows_7/log.txt.gz (grep for QtCore5.lib.lib) Rather than a naive and error prone replacement of whitespace, generate the appropriate ';' separated content directly in the qmake prl file. Change-Id: I8eb5e233a0318b57ec74b86d910583ff99c29415 Reviewed-by: Rohan McGovern Reviewed-by: Brad King Reviewed-by: Stephen Kelly --- mkspecs/cmake/Qt5BasicConfig.cmake.in | 5 ++--- qmake/generators/makefile.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mkspecs/cmake/Qt5BasicConfig.cmake.in b/mkspecs/cmake/Qt5BasicConfig.cmake.in index 8fb3ffb5812..28b687ee950 100644 --- a/mkspecs/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/cmake/Qt5BasicConfig.cmake.in @@ -78,9 +78,8 @@ if (NOT Qt5_EXCLUDE_STATIC_DEPENDENCIES) macro(macro_process_prl_file prl_file_location Configuration) if (EXISTS \"${prl_file_location}\") - file(STRINGS \"${prl_file_location}\" prl_strings REGEX \"QMAKE_PRL_LIBS\") - string(REGEX REPLACE \"QMAKE_PRL_LIBS *= *([^\\n]*)\" \"\\\\1\" static_depends ${prl_strings} ) - string(STRIP ${static_depends} static_depends) + file(STRINGS \"${prl_file_location}\" prl_strings REGEX \"QMAKE_PRL_LIBS_FOR_CMAKE\") + string(REGEX REPLACE \"QMAKE_PRL_LIBS_FOR_CMAKE *= *([^\\n]*)\" \"\\\\1\" static_depends ${prl_strings} ) if (_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES) set(_list_sep \";\") endif() diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 49f626b2d92..260c7313f45 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -1010,6 +1010,13 @@ MakefileGenerator::writePrlFile(QTextStream &t) for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it) t << project->values((*it).toKey()).join(' ').replace('\\', "\\\\") << " "; t << endl; + t << "QMAKE_PRL_LIBS_FOR_CMAKE = "; + QString sep; + for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it) { + t << sep << project->values((*it).toKey()).join(';').replace('\\', "\\\\"); + sep = ';'; + } + t << endl; } }