⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unixmake.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                        frameworkdirs.append(f);                } else if(Option::target_mode == Option::TARG_MACX_MODE && opt.startsWith("-framework")) {                    if(opt.length() > 11)                        opt = opt.mid(11);                    else                        opt = l.at(++lit);                    opt = opt.trimmed();                    const QList<QMakeLocalFileName> dirs = frameworkdirs + libdirs;                    for(int dep_i = 0; dep_i < dirs.size(); ++dep_i) {                        QString prl = dirs[dep_i].local() + "/" + opt + ".framework/" + opt + Option::prl_ext;                        if(processPrlFile(prl))                            break;                    }                }            } else if(!opt.isNull()) {                QString lib = opt;                processPrlFile(lib);#if 0                if(ret)                    opt = linkLib(lib, "");#endif                if(!opt.isEmpty())                    l.replaceInStrings(lib, opt);            }            QStringList &prl_libs = project->values("QMAKE_CURRENT_PRL_LIBS");            if(!prl_libs.isEmpty()) {                for(int prl = 0; prl < prl_libs.size(); ++prl)                    l.insert(lit+prl+1, prl_libs.at(prl));                prl_libs.clear();            }        }        //merge them into a logical order        if(!project->isActiveConfig("no_smart_library_merge") && !project->isActiveConfig("no_lflags_merge")) {            QStringList lflags;            for(int lit = 0; lit < l.size(); ++lit) {                QString opt = l.at(lit).trimmed();                if(opt.startsWith("-")) {                    if(opt.startsWith("-L") ||                       (Option::target_mode == Option::TARG_MACX_MODE && opt.startsWith("-F"))) {                        if(lit == 0 || l.lastIndexOf(opt, lit-1) == -1)                            lflags.append(opt);                    } else if(opt.startsWith("-l")) {                        if(lit == l.size()-1 || l.indexOf(opt, lit+1) == -1)                            lflags.append(opt);                    } else if(Option::target_mode == Option::TARG_MACX_MODE && opt.startsWith("-framework")) {                        if(opt.length() > 11)                            opt = opt.mid(11);                        else                            opt = l.at(++lit);                        bool found = false;                        for(int x = lit+1; x < l.size(); ++x) {                            QString xf = l.at(x);                            if(xf.startsWith("-framework")) {                                QString framework;                                if(xf.length() > 11)                                    framework = xf.mid(11);                                else                                    framework = l.at(++x);                                if(framework == opt) {                                    found = true;                                    break;                                }                            }                        }                        if(!found) {                            lflags.append("-framework");                            lflags.append(opt);                        }                    } else {                        lflags.append(opt);                    }                } else if(!opt.isNull()) {                    if(lit == 0 || l.lastIndexOf(opt, lit-1) == -1)                        lflags.append(opt);                }            }            l = lflags;        }    }}QStringUnixMakefileGenerator::defaultInstall(const QString &t){    if(t != "target" || project->first("TEMPLATE") == "subdirs")        return QString();    bool bundle = false;    const QString root = "$(INSTALL_ROOT)";    QStringList &uninst = project->values(t + ".uninstall");    QString ret, destdir=project->first("DESTDIR");    QString targetdir = Option::fixPathToTargetOS(project->first("target.path"), false);    if(!destdir.isEmpty() && destdir.right(1) != Option::dir_sep)        destdir += Option::dir_sep;    targetdir = fileFixify(targetdir, FileFixifyAbsolute);    if(targetdir.right(1) != Option::dir_sep)        targetdir += Option::dir_sep;    QStringList links;    QString target="$(TARGET)";    QStringList &targets = project->values(t + ".targets");    if(!project->isEmpty("QMAKE_BUNDLE")) {        target = project->first("QMAKE_BUNDLE");        bundle = true;    } else if(project->first("TEMPLATE") == "app") {        target = "$(QMAKE_TARGET)";    } else if(project->first("TEMPLATE") == "lib") {        if(project->isEmpty("QMAKE_CYGWIN_SHLIB")) {            if(!project->isActiveConfig("staticlib") && !project->isActiveConfig("plugin")) {                if(project->isEmpty("QMAKE_HPUX_SHLIB")) {                    links << "$(TARGET0)" << "$(TARGET1)" << "$(TARGET2)";                } else {                    links << "$(TARGET0)";                }            }        }    }    for(int i = 0; i < targets.size(); ++i) {        QString src = targets.at(i),                dst = filePrefixRoot(root, targetdir + src.section('/', -1));        if(!ret.isEmpty())            ret += "\n\t";        ret += "-$(INSTALL_FILE) \"" + src + "\" \"" + dst + "\"";        if(!uninst.isEmpty())            uninst.append("\n\t");        uninst.append("-$(DEL_FILE) \"" + dst + "\"");    }    if(!bundle && project->isActiveConfig("compile_libtool")) {        QString src_targ = target;        if(src_targ == "$(TARGET)")            src_targ = "$(TARGETL)";        QString dst_dir = fileFixify(targetdir, FileFixifyAbsolute);        if(QDir::isRelativePath(dst_dir))            dst_dir = Option::fixPathToTargetOS(Option::output_dir + Option::dir_sep + dst_dir);        ret = "-$(LIBTOOL) --mode=install cp \"" + src_targ + "\" \"" + filePrefixRoot(root, dst_dir) + "\"";        uninst.append("-$(LIBTOOL) --mode=uninstall \"" + src_targ + "\"");    } else {        QString src_targ = target;        if(!destdir.isEmpty())            src_targ = Option::fixPathToTargetOS(destdir + target, false);        QString dst_targ = filePrefixRoot(root, fileFixify(targetdir + target, FileFixifyAbsolute));        if(bundle) {            if(!ret.isEmpty())                ret += "\n\t";            ret += "$(DEL_FILE) -r \"" + dst_targ + "\"\n\t";        }        if(!ret.isEmpty())            ret += "\n\t";        QString copy_cmd("-");        if (bundle)            copy_cmd += "$(INSTALL_DIR)";        else if (project->first("TEMPLATE") == "lib" && project->isActiveConfig("staticlib"))            copy_cmd += "$(INSTALL_FILE)";        else            copy_cmd += "$(INSTALL_PROGRAM)";        copy_cmd += " \"" + src_targ + "\" \"" + dst_targ + "\"";        if(project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib")           && project->values(t + ".CONFIG").indexOf("fix_rpath") != -1) {            if(!project->isEmpty("QMAKE_FIX_RPATH")) {                ret += copy_cmd;                ret += "\n\t-" + var("QMAKE_FIX_RPATH") + " \"" +                       dst_targ + "\" \"" + dst_targ + "\"";            } else if(!project->isEmpty("QMAKE_LFLAGS_RPATH")) {                ret += "-$(LINK) $(LFLAGS) " + var("QMAKE_LFLAGS_RPATH") + targetdir + " -o \"" +                       dst_targ + "\" $(OBJECTS) $(LIBS) $(OBJCOMP)";            } else {                ret += copy_cmd;            }        } else {            ret += copy_cmd;        }        if(project->first("TEMPLATE") == "lib" && project->isActiveConfig("staticlib")) {            if(!project->isEmpty("QMAKE_RANLIB"))                ret += QString("\n\t$(RANLIB) \"") + dst_targ + "\"";        } else if(!project->isActiveConfig("debug") && !project->isActiveConfig("nostrip") && !project->isEmpty("QMAKE_STRIP")) {            ret += "\n\t-" + var("QMAKE_STRIP");            if(project->first("TEMPLATE") == "lib" && !project->isEmpty("QMAKE_STRIPFLAGS_LIB"))                ret += " " + var("QMAKE_STRIPFLAGS_LIB");            else if(project->first("TEMPLATE") == "app" && !project->isEmpty("QMAKE_STRIPFLAGS_APP"))                ret += " " + var("QMAKE_STRIPFLAGS_APP");            if(bundle)                ret = " \"" + dst_targ + "/Contents/MacOS/$(QMAKE_TARGET)\"";            else                ret += " \"" + dst_targ + "\"";        }        if(!uninst.isEmpty())            uninst.append("\n\t");        if(bundle)            uninst.append("-$(DEL_FILE) -r \"" + dst_targ + "\"");        else            uninst.append("-$(DEL_FILE) \"" + dst_targ + "\"");        if(!links.isEmpty()) {            for(int i = 0; i < links.size(); ++i) {                if(Option::target_mode == Option::TARG_WIN_MODE ||                   Option::target_mode == Option::TARG_MAC9_MODE) {                } else if(Option::target_mode == Option::TARG_UNIX_MODE ||                          Option::target_mode == Option::TARG_MACX_MODE) {                    QString link = Option::fixPathToTargetOS(destdir + links[i], false);                    int lslash = link.lastIndexOf(Option::dir_sep);                    if(lslash != -1)                        link = link.right(link.length() - (lslash + 1));                    QString dst_link = filePrefixRoot(root, fileFixify(targetdir + link, FileFixifyAbsolute));                    ret += "\n\t-$(SYMLINK) \"$(TARGET)\" \"" + dst_link + "\"";                    if(!uninst.isEmpty())                        uninst.append("\n\t");                    uninst.append("-$(DEL_FILE) \"" + dst_link + "\"");                }            }        }    }    if(project->first("TEMPLATE") == "lib") {        QStringList types;        types << "prl" << "libtool" << "pkgconfig";        for(int i = 0; i < types.size(); ++i) {            const QString type = types.at(i);            QString meta;            if(type == "prl" && project->isActiveConfig("create_prl") && !project->isActiveConfig("no_install_prl") &&               !project->isEmpty("QMAKE_INTERNAL_PRL_FILE"))                meta = prlFileName(false);            if(type == "libtool" && project->isActiveConfig("create_libtool") && !project->isActiveConfig("compile_libtool"))                meta = libtoolFileName(false);            if(type == "pkgconfig" && project->isActiveConfig("create_pc"))                meta = pkgConfigFileName(false);            if(!meta.isEmpty()) {                QString src_meta = meta;                if(!destdir.isEmpty())                    src_meta = Option::fixPathToTargetOS(destdir + meta, false);                QString dst_meta = filePrefixRoot(root, fileFixify(targetdir + meta, FileFixifyAbsolute));                if(!uninst.isEmpty())                    uninst.append("\n\t");                uninst.append("-$(DEL_FILE) \"" + dst_meta + "\"");                const QString replace_rule("QMAKE_" + type.toUpper() + "_INSTALL_REPLACE");                const QString dst_meta_dir = fileInfo(dst_meta).path();                if(!dst_meta_dir.isEmpty()) {                    if(!ret.isEmpty())                        ret += "\n\t";                    ret += mkdir_p_asstring(dst_meta_dir, true);                }                QString install_meta = "$(INSTALL_FILE) \"" + src_meta + "\" \"" + dst_meta + "\"";                if(project->isEmpty(replace_rule) || project->isActiveConfig("no_sed_meta_install")) {                    if(!ret.isEmpty())                        ret += "\n\t";                    ret += "-" + install_meta;                } else {                    if(!ret.isEmpty())                        ret += "\n\t";                    ret += "-$(SED)";                    QStringList replace_rules = project->values(replace_rule);                    for(int r = 0; r < replace_rules.size(); ++r) {                        const QString match = project->first(replace_rules.at(r) + ".match"),                                    replace = project->first(replace_rules.at(r) + ".replace");                        if(!match.isEmpty() /*&& match != replace*/)                            ret += " -e \"s," + match + "," + replace + ",g\"";                    }                    ret += " \"" + src_meta + "\" >\"" + dst_meta + "\"";                    //ret += " || " + install_meta;                }            }        }    }    return ret;}QStringUnixMakefileGenerator::escapeFilePath(const QString &path) const{    QString ret = path;    if(!ret.isEmpty()) {        ret = unescapeFilePath(ret).replace(" ", "\\ ");        debug_msg(2, "EscapeFilePath: %s -> %s", path.toLatin1().constData(), ret.toLatin1().constData());    }    return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -