git-svn-id: svn://db.shs.com.ru/libs@784 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2020-03-14 19:54:17 +00:00
parent f54edfac7c
commit abc4850ca4

View File

@@ -32,7 +32,7 @@ void usage() {
piCout << "If <file> depend on QtCore library, then copy all basic Qt plugins, "; piCout << "If <file> depend on QtCore library, then copy all basic Qt plugins, ";
piCout << "<styles> and <platform>"; piCout << "<styles> and <platform>";
piCout << ""; piCout << "";
piCout << Green << Bold << "Usage:" << Default << "\"deploy_tool [-hvfC] -o <out_path> [-s <search_path>] [-S <styles>] [-l <ldd>] [-L <readelf> | -W <objdump> | -M <otool>] [-d <depth>] [-q <qtdir>] [-a <add_libs>] [-S <styles>] [-P <platforms>] <file>\"" << NewLine; piCout << Green << Bold << "Usage:" << Default << "\"deploy_tool [-hvfC] -o <out_path> [-p <qt_plugins>] [-s <search_path>] [-S <styles>] [-l <ldd>] [-L <readelf> | -W <objdump> | -M <otool>] [-d <depth>] [-q <qtdir>] [-a <add_libs>] [-S <styles>] [-P <platforms>] <file>\"" << NewLine;
piCout << Green << Bold << "Details:"; piCout << Green << Bold << "Details:";
piCout << Bold << "Debug control"; piCout << Bold << "Debug control";
piCout << "-h " << Green << "- display this message and exit"; piCout << "-h " << Green << "- display this message and exit";
@@ -52,6 +52,7 @@ void usage() {
piCout << ""; piCout << "";
piCout << Bold << "Output control"; piCout << Bold << "Output control";
piCout << "-o <out_path> " << Green << "- path for libraries copy to"; piCout << "-o <out_path> " << Green << "- path for libraries copy to";
piCout << "-p <qt_plugins> " << Green << "- path for Qt plugins, default \"<out_path>/plugins\"";
piCout << ""; piCout << "";
piCout << Bold << "Input control"; piCout << Bold << "Input control";
piCout << "<file> " << Green << "- executable to process"; piCout << "<file> " << Green << "- executable to process";
@@ -63,9 +64,9 @@ void usage() {
int depth = 1; int depth = 1;
bool need_qt = false, fake = false, is_ldd = true; bool need_qt = false, fake = false, is_ldd = true;
PIString ldd, readelf, objdump, otool, out_dir, qt_dir; PIString ldd, readelf, objdump, otool, out_dir, qt_dir, out_plugins_dir;
PIStringList styles, lib_dirs, add_libs, platforms; PIStringList styles, lib_dirs, add_libs, platforms;
PISet<PIString> all_libs, miss_libs, frameworks; PISet<PIString> all_libs, miss_libs, frameworks, miss_frameworks;
PIString findLib(const PIString & l) { PIString findLib(const PIString & l) {
@@ -232,8 +233,9 @@ void procQt() {
vs = "QMake version ?.?\nUsing Qt version ?.?.? in " + qt_dir; vs = "QMake version ?.?\nUsing Qt version ?.?.? in " + qt_dir;
PIStringList vsl = vs.split("\n"); PIStringList vsl = vs.split("\n");
PIStringList pdirs; PIStringList pdirs;
PIString out_plugins_dir = out_dir + "plugins/";
pdirs << "imageformats" << "sqldrivers"; pdirs << "imageformats" << "sqldrivers";
if (!fake)
PIDir(out_plugins_dir).make(true);
piForeach (PIString l, vsl) { piForeach (PIString l, vsl) {
if (l.trim().contains("Qt version")) { if (l.trim().contains("Qt version")) {
l.cutLeft(l.find("Qt version") + 10).trim(); l.cutLeft(l.find("Qt version") + 10).trim();
@@ -284,6 +286,7 @@ int main(int argc, char * argv[]) {
cli.addArgument("Conf"); cli.addArgument("Conf");
cli.addArgument("fake"); cli.addArgument("fake");
cli.addArgument("output", true); cli.addArgument("output", true);
cli.addArgument("qt_out_plugins", true);
cli.addArgument("search_path", true); cli.addArgument("search_path", true);
cli.addArgument("Styles", true); cli.addArgument("Styles", true);
cli.addArgument("Platforms", true); cli.addArgument("Platforms", true);
@@ -311,6 +314,9 @@ int main(int argc, char * argv[]) {
readelf = cli.argumentValue("Lreadelf"); readelf = cli.argumentValue("Lreadelf");
objdump = cli.argumentValue("Wobjdump"); objdump = cli.argumentValue("Wobjdump");
otool = cli.argumentValue("Motool"); otool = cli.argumentValue("Motool");
out_plugins_dir = out_dir + "plugins/";
if (!cli.argumentValue("qt_out_plugins").isEmpty())
out_plugins_dir = cli.argumentValue("qt_out_plugins");
int etcnt = 0; int etcnt = 0;
if (!readelf.isEmpty()) ++etcnt; if (!readelf.isEmpty()) ++etcnt;
if (!objdump.isEmpty()) ++etcnt; if (!objdump.isEmpty()) ++etcnt;
@@ -353,15 +359,19 @@ int main(int argc, char * argv[]) {
PIVector<PIString> fwdirs = frameworks.toVector(); PIVector<PIString> fwdirs = frameworks.toVector();
piForeachC (PIString & f, fwdirs) { piForeachC (PIString & f, fwdirs) {
PIString fd = findLib(f); PIString fd = findLib(f);
piCout << "copy framework" << f; if (!fd.isEmpty()) {
if (!fake) piCout << "copy framework" << f;
system(cmd_copydir + "\"" + fd + "\" \"" + out_dir + "\""); if (!fake)
system(cmd_copydir + "\"" + fd + "\" \"" + out_dir + "\"");
} else
miss_frameworks << f;
} }
piCout << "copied" << clibs.size_s() << "files"; piCout << "copied" << clibs.size_s() << "files";
if (!miss_libs.isEmpty()) { if (!miss_libs.isEmpty())
piCout << "Missing libraries:\n - " << PIStringList(miss_libs.toVector()).join("\n - "); piCout << "Missing libraries:\n - " << PIStringList(miss_libs.toVector()).join("\n - ");
} if (!miss_frameworks.isEmpty())
piCout << "Missing frameworks:\n - " << PIStringList(miss_frameworks.toVector()).join("\n - ");
return 0; return 0;
} }