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

📄 makefile.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                    QString cmd =  QString(fi.isExecutable() ? "-$(INSTALL_PROGRAM)" : "-$(INSTALL_FILE)") + " " +                                   wild + " " + dst_file + "\n";                    target += cmd;                    if(!uninst.isEmpty())                        uninst.append("\n\t");                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + filestr, FileFixifyAbsolute, false)));                }                for(int x = 0; x < files.count(); x++) {                    QString file = files[x];                    if(file == "." || file == "..") //blah                        continue;                    if(!uninst.isEmpty())                        uninst.append("\n\t");                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + file, FileFixifyAbsolute, false)));                    QFileInfo fi(fileInfo(dirstr + file));                    if(!target.isEmpty())                        target += "\t";                    QString dst_file = filePrefixRoot(root, fileFixify(dst, FileFixifyAbsolute, false));                    if(fi.isDir() && project->isActiveConfig("copy_dir_files")) {                        if(!dst_file.endsWith(Option::dir_sep))                            dst_file += Option::dir_sep;                        dst_file += fi.fileName();                    }                    QString cmd = QString(fi.isDir() ? "-$(INSTALL_DIR)" : "-$(INSTALL_FILE)") + " " +                                  dirstr + file + " " + dst_file + "\n";		    target += cmd;                    if(!project->isActiveConfig("debug") && !project->isActiveConfig("nostrip") &&                       !fi.isDir() && fi.isExecutable() && !project->isEmpty("QMAKE_STRIP"))                        target += QString("\t-") + var("QMAKE_STRIP") + " " +                                  filePrefixRoot(root, fileFixify(dst + file, FileFixifyAbsolute, false)) +                                  "\n";                }            }        }        //default?        if(do_default) {            target = defaultInstall((*it));            uninst = project->values((*it) + ".uninstall");        }        if(!target.isEmpty()) {            if(noBuild || project->values((*it) + ".CONFIG").indexOf("no_build") != -1)                t << "install_" << (*it) << ":";            else if(project->isActiveConfig("build_all"))                t << "install_" << (*it) << ": all";            else                t << "install_" << (*it) << ": first";            const QStringList &deps = project->values((*it) + ".depends");            if(!deps.isEmpty()) {                for(QStringList::ConstIterator dep_it = deps.begin(); dep_it != deps.end(); ++dep_it) {                    QString targ = var((*dep_it) + ".target");                    if(targ.isEmpty())                        targ = (*dep_it);                    t << " " << escapeDependencyPath(targ);                }            }            if(project->isEmpty("QMAKE_NOFORCE"))                t <<  " FORCE";            t << "\n\t";            const QStringList &dirs = project->values(pvar);            for(QStringList::ConstIterator pit = dirs.begin(); pit != dirs.end(); ++pit) {                QString tmp_dst = fileFixify((*pit), FileFixifyAbsolute, false);                if (!isWindowsShell() && tmp_dst.right(1) != Option::dir_sep)                    tmp_dst += Option::dir_sep;                t << mkdir_p_asstring(filePrefixRoot(root, tmp_dst)) << "\n\t";            }            t << target << endl << endl;            if(!uninst.isEmpty()) {                t << "uninstall_" << (*it) << ": ";                if(project->isEmpty("QMAKE_NOFORCE"))                    t <<  " FORCE";                t << "\n\t"                  << uninst.join(" ") << "\n\t"                  << "-$(DEL_DIR) " << filePrefixRoot(root, dst) << " " << endl << endl;            }            t << endl;            if(project->values((*it) + ".CONFIG").indexOf("no_default_install") == -1) {                all_installs += QString("install_") + (*it) + " ";                if(!uninst.isEmpty())                    all_uninstalls += "uninstall_" + (*it) + " ";            }        }   else {            debug_msg(1, "no definition for install %s: install target not created",(*it).toLatin1().constData());        }    }    t << "install: " << var("INSTALLDEPS") << " " << all_installs;    if(project->isEmpty("QMAKE_NOFORCE"))        t <<  " FORCE";    t << "\n\n";    t << "uninstall: " << all_uninstalls << " " << var("UNINSTALLDEPS");    if(project->isEmpty("QMAKE_NOFORCE"))        t <<  " FORCE";    t << "\n\n";}QStringMakefileGenerator::var(const QString &var){    return val(project->values(var));}QStringMakefileGenerator::val(const QStringList &varList){    return valGlue(varList, "", " ", "");}QStringMakefileGenerator::varGlue(const QString &var, const QString &before, const QString &glue, const QString &after){    return valGlue(project->values(var), before, glue, after);}QStringMakefileGenerator::valGlue(const QStringList &varList, const QString &before, const QString &glue, const QString &after){    QString ret;    for(QStringList::ConstIterator it = varList.begin(); it != varList.end(); ++it) {        if(!(*it).isEmpty()) {            if(!ret.isEmpty())                ret += glue;            ret += (*it);        }    }    return ret.isEmpty() ? QString("") : before + ret + after;}QStringMakefileGenerator::varList(const QString &var){    return valList(project->values(var));}QStringMakefileGenerator::valList(const QStringList &varList){    return valGlue(varList, "", " \\\n\t\t", "");}QStringListMakefileGenerator::createObjectList(const QStringList &sources){    QStringList ret;    QString objdir;    if(!project->values("OBJECTS_DIR").isEmpty())        objdir = project->first("OBJECTS_DIR");    for(QStringList::ConstIterator it = sources.begin(); it != sources.end(); ++it) {        QFileInfo fi(fileInfo(Option::fixPathToLocalOS((*it))));        QString dir;        if(objdir.isEmpty() && project->isActiveConfig("object_with_source")) {            QString fName = Option::fixPathToTargetOS((*it), false);            int dl = fName.lastIndexOf(Option::dir_sep);            if(dl != -1)                dir = fName.left(dl + 1);        } else {            dir = objdir;        }        ret.append(dir + fi.completeBaseName() + Option::obj_ext);    }    return ret;}ReplaceExtraCompilerCacheKey::ReplaceExtraCompilerCacheKey(const QString &v, const QStringList &i, const QStringList &o){    hash = 0;    pwd = qmake_getpwd();    var = v;    {        QStringList il = i;        il.sort();        in = il.join("::");    }    {        QStringList ol = o;        ol.sort();        out = ol.join("::");    }}bool ReplaceExtraCompilerCacheKey::operator==(const ReplaceExtraCompilerCacheKey &f) const{    return (hashCode() == f.hashCode() &&            f.in == in &&            f.out == out &&            f.var == var &&            f.pwd == pwd);}QStringMakefileGenerator::replaceExtraCompilerVariables(const QString &orig_var, const QStringList &in, const QStringList &out){    //lazy cache    ReplaceExtraCompilerCacheKey cacheKey(orig_var, in, out);    QString cacheVal = extraCompilerVariablesCache.value(cacheKey);    if(!cacheVal.isNull())        return cacheVal;    //do the work    QString ret = orig_var;    QRegExp reg_var("\\$\\{.*\\}");    reg_var.setMinimal(true);    for(int rep = 0; (rep = reg_var.indexIn(ret, rep)) != -1; ) {        QStringList val;        const QString var = ret.mid(rep + 2, reg_var.matchedLength() - 3);        bool filePath = false;        if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_VAR_"))) {            const QString varname = var.mid(10);            val += project->values(varname);        }        if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_VAR_FIRST_"))) {            const QString varname = var.mid(12);            val += project->first(varname);        }        if(val.isEmpty() && !in.isEmpty()) {            if(var.startsWith(QLatin1String("QMAKE_FUNC_FILE_IN_"))) {                filePath = true;                const QString funcname = var.mid(19);                val += project->expand(funcname, QList<QStringList>() << in);            } else if(var == QLatin1String("QMAKE_FILE_BASE") || var == QLatin1String("QMAKE_FILE_IN_BASE")) {                //filePath = true;                for(int i = 0; i < in.size(); ++i) {                    QFileInfo fi(fileInfo(Option::fixPathToLocalOS(in.at(i))));                    QString base = fi.completeBaseName();                    if(base.isNull())                        base = fi.fileName();                    val += base;                }            } else if(var == QLatin1String("QMAKE_FILE_PATH") || var == QLatin1String("QMAKE_FILE_IN_PATH")) {                filePath = true;                for(int i = 0; i < in.size(); ++i)                    val += fileInfo(Option::fixPathToLocalOS(in.at(i))).path();            } else if(var == QLatin1String("QMAKE_FILE_NAME") || var == QLatin1String("QMAKE_FILE_IN")) {                filePath = true;                for(int i = 0; i < in.size(); ++i)                    val += fileInfo(Option::fixPathToLocalOS(in.at(i))).filePath();            }        }        if(val.isEmpty() && !out.isEmpty()) {            if(var.startsWith(QLatin1String("QMAKE_FUNC_FILE_OUT_"))) {                filePath = true;                const QString funcname = var.mid(20);                val += project->expand(funcname, QList<QStringList>() << out);            } else if(var == QLatin1String("QMAKE_FILE_OUT")) {                filePath = true;                for(int i = 0; i < out.size(); ++i)                    val += fileInfo(Option::fixPathToLocalOS(out.at(i))).filePath();            } else if(var == QLatin1String("QMAKE_FILE_OUT_BASE")) {                //filePath = true;                for(int i = 0; i < out.size(); ++i) {                    QFileInfo fi(fileInfo(Option::fixPathToLocalOS(out.at(i))));                    QString base = fi.completeBaseName();                    if(base.isNull())                        base = fi.fileName();                    val += base;                }            }        }        if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_FUNC_"))) {            const QString funcname = var.mid(11);            val += project->expand(funcname, QList<QStringList>() << in << out);        }        if(!val.isEmpty()) {            QString fullVal;            if(filePath) {                for(int i = 0; i < val.size(); ++i) {                    const QString file = Option::fixPathToTargetOS(unescapeFilePath(val.at(i)), false);                    if(!fullVal.isEmpty())                        fullVal += " ";                    fullVal += escapeFilePath(file);                }            } else {                fullVal = val.join(" ");            }            ret.replace(rep, reg_var.matchedLength(), fullVal);            rep += fullVal.length();        } else {            rep += reg_var.matchedLength();        }    }    //cache the value    extraCompilerVariablesCache.insert(cacheKey, ret);    return ret;}boolMakefileGenerator::verifyExtraCompiler(const QString &comp, const QString &file_unfixed){    if(noIO())        return false;    const QString file = Option::fixPathToLocalOS(file_unfixed);    if(project->values(comp + ".CONFIG").indexOf("moc_verify") != -1) {        if(!file.isNull()) {            QMakeSourceFileInfo::addSourceFile(file, QMakeSourceFileInfo::SEEK_MOCS);            if(!mocable(file))                return false;        }    } else if(project->values(comp + ".CONFIG").indexOf("function_verify") != -1) {        QString tmp_out = project->values(comp + ".output").first();        if(tmp_out.isEmpty())            return false;        QStringList verify_function = project->values(comp + ".verify_function");        if(verify_function.isEmpty())            return false;        for(int i = 0; i < verify_function.size(); ++i) {            bool invert = false;            QString verify = verify_function.at(i);            if(verify.at(0) == QLatin1Char('!')) {                invert = true;                

⌨️ 快捷键说明

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