diff --git a/utils/deploy_tool/main.cpp b/utils/deploy_tool/main.cpp index ce41019c..f20ad19a 100644 --- a/utils/deploy_tool/main.cpp +++ b/utils/deploy_tool/main.cpp @@ -132,7 +132,7 @@ bool fake = false, is_ldd = true, is_deps = false, need_qt = false, make_qt_form PIString ldd, readelf, objdump, otool, dpkg, nametool, strip, out_dir, qt_dir, out_plugins_dir, dpkg_workdir; PIString qt_pref, qt_suff; PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs, qt_add_libs; -PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs; +PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs, qt_libs; PIMap qt_filters; @@ -183,17 +183,18 @@ PIString execute(const PIString & cmd) { void checkQtLib(PIString lib) { - PIString pref, suff; - if (lib.startsWith("lib")) {pref += "lib"; lib.cutLeft(3);} - if (lib.startsWith("qt5")) {pref += "Qt5"; lib.cutLeft(3);} - if (lib.startsWith("qt" )) {pref += "Qt" ; lib.cutLeft(2);} - if (lib.find('.') >= 0) {suff = lib.right(lib.size_s() - lib.find('.')); lib = lib.left(lib.find('.'));} + PIString base = lib, pref, suff; + if (base.startsWith("lib")) {pref += "lib"; base.cutLeft(3);} + if (base.startsWith("qt5")) {pref += "Qt5"; base.cutLeft(3);} + if (base.startsWith("qt" )) {pref += "Qt" ; base.cutLeft(2);} + if (base.find('.') >= 0) {suff = base.right(base.size_s() - base.find('.')); base = base.left(base.find('.'));} for (int i = 0; ; ++i) { if (qt_deps[i].lib.isEmpty()) break; - if (qt_deps[i].lib == lib) { + if (qt_deps[i].lib == base) { qt_plugins << qt_deps[i].plugins; //piCout << "add qt plugins" << qt_deps[i].plugins << "now" << qt_plugins; need_qt = true; + qt_libs << lib; if (make_qt_format) { make_qt_format = false; qt_pref = pref; @@ -658,16 +659,32 @@ int main(int argc, char * argv[]) { if (!all_libs[alib]) all_libs << alib; } - if (need_qt && !is_deps) - procQt(); + if (need_qt) { + bool need_qt_plugins = true; + if (is_deps) { // if Qt in system, then no plugins copy + PIVector qlibs = qt_libs.toVector(); + piCout << "check for installed Qt" << qlibs; + piForeach (PIString l, qlibs) { + l = findLib(l); + if (l.isEmpty()) continue; + if (procDpkg(l)) { + piCout << "system Qt found!"; + need_qt_plugins = false; + break; + } + } + } + if (need_qt_plugins) + procQt(); + } #ifdef WINDOWS out_dir.replaceAll("/", "\\"); #endif PIVector clibs = all_libs.toVector(); piForeach (PIString l, clibs) { - PIFile::FileInfo fi; - fi.path = l; + PIFile::FileInfo fi; + fi.path = l; #ifdef WINDOWS l.replaceAll("/", "\\"); #endif