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

📄 pbuilder_pbx.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        else            fprintf(stderr, "No group available for %s!\n", k.toLatin1().constData());    }}QStringListProjectBuilderSources::files(QMakeProject *project) const{    QStringList ret = project->values(key);    if(key == "QMAKE_INTERNAL_INCLUDED_FILES") {        QString pfile = project->projectFile();        if(pfile != "(stdin)")            ret.prepend(pfile);        for(int i = 0; i < ret.size(); ++i) {            QStringList newret;            if(!ret.at(i).endsWith(Option::prf_ext))                newret.append(ret.at(i));            ret = newret;        }    }    if(key == "SOURCES" && project->first("TEMPLATE") == "app" && !project->isEmpty("ICON"))        ret.append(project->first("ICON"));    return ret;}boolProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t){    QStringList tmp;    bool did_preprocess = false;    //HEADER    const int pbVersion = pbuilderVersion();    t << "// !$*UTF8*$!" << "\n"      << "{" << "\n"      << "\t" << writeSettings("archiveVersion", "1", SettingsNoQuote) << ";" << "\n"      << "\t" << "classes = {" << "\n" << "\t" << "};" << "\n"      << "\t" << writeSettings("objectVersion", QString::number(pbVersion), SettingsNoQuote) << ";" << "\n"      << "\t" << "objects = {" << endl;    //MAKE QMAKE equivelant    if(!project->isActiveConfig("no_autoqmake") && project->projectFile() != "(stdin)") {        QString mkfile = pbx_dir + Option::dir_sep + "qt_makeqmake.mak";        QFile mkf(mkfile);        if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) {            writingUnixMakefileGenerator = true;            debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData());            QTextStream mkt(&mkf);            writeHeader(mkt);            mkt << "QMAKE    = "        << (project->isEmpty("QMAKE_QMAKE") ?                                            QString((QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmake")) :                                            var("QMAKE_QMAKE")) << endl;            writeMakeQmake(mkt);            mkt.flush();            mkf.close();            writingUnixMakefileGenerator = false;        }        QString phase_key = keyFor("QMAKE_PBX_MAKEQMAKE_BUILDPHASE");        mkfile = fileFixify(mkfile, qmake_getpwd());        project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key);        t << "\t\t" << phase_key << " = {" << "\n"          << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"          << "\t\t\t" << writeSettings("files", QStringList(), SettingsAsList, 4) << ";" << "\n"          << "\t\t\t" << writeSettings("generatedFileNames", QStringList(), SettingsAsList, 4) << ";" << "\n"          << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n"          << "\t\t\t" << writeSettings("name", "Qt Qmake") << ";" << "\n"          << "\t\t\t" << writeSettings("neededFileNames", QStringList(), SettingsAsList, 4) << ";" << "\n"          << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"          << "\t\t\t" << writeSettings("shellScript", fixForOutput("make -C " + escapeFilePath(qmake_getpwd()) + " -f " + escapeFilePath(mkfile))) << ";" << "\n"          << "\t\t" << "};" << "\n";    }    //DUMP SOURCES    QMap<QString, QStringList> groups;    QList<ProjectBuilderSources> sources;    sources.append(ProjectBuilderSources("SOURCES", true));    sources.append(ProjectBuilderSources("GENERATED_SOURCES", true));    sources.append(ProjectBuilderSources("GENERATED_FILES"));    sources.append(ProjectBuilderSources("HEADERS"));    sources.append(ProjectBuilderSources("QMAKE_INTERNAL_INCLUDED_FILES"));    if(!project->isEmpty("QMAKE_EXTRA_COMPILERS")) {        const QStringList &quc = project->values("QMAKE_EXTRA_COMPILERS");        for(QStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) {            QString tmp_out = project->first((*it) + ".output");            if(project->isEmpty((*it) + ".output"))                continue;            QString name = (*it);            if(!project->isEmpty((*it) + ".name"))                name = project->first((*it) + ".name");            const QStringList &inputs = project->values((*it) + ".input");            for(int input = 0; input < inputs.size(); ++input) {                if(project->isEmpty(inputs.at(input)))                    continue;                bool duplicate = false;                for(int i = 0; i < sources.size(); ++i) {                    if(sources.at(i).keyName() == inputs.at(input)) {                        duplicate = true;                        break;                    }                }                if(!duplicate) {                    bool isObj = project->values((*it) + ".CONFIG").indexOf("no_link") == -1;                    const QStringList &outputs = project->values((*it) + ".variable_out");                    for(int output = 0; output < outputs.size(); ++output) {                        if(outputs.at(output) != "OBJECT") {                            isObj = false;                            break;                        }                    }                    sources.append(ProjectBuilderSources(inputs.at(input), true,                                                         QString("Sources [") + name + "]", (*it), isObj));                }            }        }    }    for(int source = 0; source < sources.size(); ++source) {        QStringList &src_list = project->values("QMAKE_PBX_" + sources.at(source).keyName());        QStringList &root_group_list = project->values("QMAKE_PBX_GROUPS");        QStringList files = fileFixify(sources.at(source).files(project));        for(int f = 0; f < files.count(); ++f) {            QString file = files[f];            if(file.length() >= 2 && (file[0] == '"' || file[0] == '\'') && file[(int) file.length()-1] == file[0])                file = file.mid(1, file.length()-2);            if(!sources.at(source).compilerName().isNull() &&               !verifyExtraCompiler(sources.at(source).compilerName(), file))                continue;            if(file.endsWith(Option::prl_ext))                continue;            bool in_root = true;            QString src_key = keyFor(file), name = file;            if(project->isActiveConfig("flat")) {                QString flat_file = fileFixify(file, qmake_getpwd(), Option::output_dir, FileFixifyRelative);                if(flat_file.indexOf(Option::dir_sep) != -1) {                    QStringList dirs = flat_file.split(Option::dir_sep);                    name = dirs.back();                }            } else {                QString flat_file = fileFixify(file, qmake_getpwd(), Option::output_dir, FileFixifyRelative);                if(QDir::isRelativePath(flat_file) && flat_file.indexOf(Option::dir_sep) != -1) {                    QString last_grp("QMAKE_PBX_" + sources.at(source).groupName() + "_HEIR_GROUP");                    QStringList dirs = flat_file.split(Option::dir_sep);                    name = dirs.back();                    dirs.pop_back(); //remove the file portion as it will be added via src_key                    for(QStringList::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) {                        QString new_grp(last_grp + Option::dir_sep + (*dir_it)), new_grp_key(keyFor(new_grp));                        if(dir_it == dirs.begin()) {                            if(!src_list.contains(new_grp_key))                                src_list.append(new_grp_key);                        } else {                            if(!groups[last_grp].contains(new_grp_key))                                groups[last_grp] += new_grp_key;                        }                        last_grp = new_grp;                    }                    groups[last_grp] += src_key;                    in_root = false;                }            }            if(in_root)                src_list.append(src_key);            //source reference            t << "\t\t" << src_key << " = {" << "\n"              << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"              << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";" << "\n"              << "\t\t\t" << writeSettings("path", escapeFilePath(file)) << ";" << "\n"              << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(file)), SettingsNoQuote) << ";" << "\n";            if(pbVersion >= 38) {                QString filetype;                for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) {                    if(file.endsWith((*cppit))) {                        filetype = "sourcecode.cpp.cpp";                        break;                    }                }                if(!filetype.isNull())                    t << "\t\t\t" << writeSettings("lastKnownFileType", filetype) << ";" << "\n";            }            t << "\t\t" << "};" << "\n";            if(sources.at(source).isBuildable()) { //build reference                QString build_key = keyFor(file + ".BUILDABLE");                t << "\t\t" << build_key << " = {" << "\n"                  << "\t\t\t" << writeSettings("fileRef", src_key) << ";" << "\n"                  << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n"                  << "\t\t\t" << "settings = {" << "\n"                  << "\t\t\t\t" << writeSettings("ATTRIBUTES", QStringList(), SettingsAsList, 5) << ";" << "\n"                  << "\t\t\t" << "};" << "\n"                  << "\t\t" << "};" << "\n";                if(sources.at(source).isObjectOutput(file))                    project->values("QMAKE_PBX_OBJ").append(build_key);            }        }        if(!src_list.isEmpty()) {            QString group_key = keyFor(sources.at(source).groupName());            if(root_group_list.indexOf(group_key) == -1)                root_group_list += group_key;            QStringList &group = groups[sources.at(source).groupName()];            for(int src = 0; src < src_list.size(); ++src) {                if(group.indexOf(src_list.at(src)) == -1)                    group += src_list.at(src);            }        }    }    for(QMap<QString, QStringList>::Iterator grp_it = groups.begin(); grp_it != groups.end(); ++grp_it) {        t << "\t\t" << keyFor(grp_it.key()) << " = {" << "\n"          << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"          << "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";" << "\n"          << "\t\t\t" << writeSettings("name", escapeFilePath(grp_it.key().section(Option::dir_sep, -1))) << ";" << "\n"          << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"          << "\t\t" << "};" << "\n";    }    //PREPROCESS BUILDPHASE (just a makefile)    {        QString mkfile = pbx_dir + Option::dir_sep + "qt_preprocess.mak";        QFile mkf(mkfile);        if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) {            writingUnixMakefileGenerator = true;            did_preprocess = true;            debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData());            QTextStream mkt(&mkf);            writeHeader(mkt);            mkt << "MOC       = " << Option::fixPathToTargetOS(var("QMAKE_MOC")) << endl;            mkt << "UIC       = " << Option::fixPathToTargetOS(var("QMAKE_UIC")) << endl;            mkt << "LEX       = " << var("QMAKE_LEX") << endl;            mkt << "LEXFLAGS  = " << var("QMAKE_LEXFLAGS") << endl;            mkt << "YACC      = " << var("QMAKE_YACC") << endl;            mkt << "YACCFLAGS = " << var("QMAKE_YACCFLAGS") << endl;            mkt << "DEFINES       = "                << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ")                << varGlue("DEFINES","-D"," -D","") << endl;

⌨️ 快捷键说明

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