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

📄 unixmake2.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    t << ".SUFFIXES: " << Option::obj_ext;    for(QStringList::Iterator cit = Option::c_ext.begin(); cit != Option::c_ext.end(); ++cit)        t << " " << (*cit);    for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit)        t << " " << (*cppit);    t << endl << endl;    for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit)        t << (*cppit) << Option::obj_ext << ":\n\t" << var("QMAKE_RUN_CXX_IMP") << endl << endl;    for(QStringList::Iterator cit = Option::c_ext.begin(); cit != Option::c_ext.end(); ++cit)        t << (*cit) << Option::obj_ext << ":\n\t" << var("QMAKE_RUN_CC_IMP") << endl << endl;    if(include_deps) {        QString cmd=var("QMAKE_CFLAGS_DEPS") + " ";        cmd += varGlue("DEFINES","-D"," -D","") + varGlue("PRL_EXPORT_DEFINES"," -D"," -D","");        if(!project->isEmpty("QMAKE_ABSOLUTE_SOURCE_PATH"))            cmd += " -I" + project->first("QMAKE_ABSOLUTE_SOURCE_PATH") + " ";        cmd += " $(INCPATH) " + varGlue("DEPENDPATH", "-I", " -I", "");        QString odir;        if(!project->values("OBJECTS_DIR").isEmpty())            odir = project->first("OBJECTS_DIR");        t << "###### Dependencies" << endl << endl;        t << odir << ".deps/%.d: %.cpp\n\t";        if(project->isActiveConfig("echo_depend_creation"))            t << "@echo Creating depend for $<" << "\n\t";        t << mkdir_p_asstring("$(@D)") << "\n\t"          << "@$(CXX) " << cmd << " $< | sed \"s,^\\($(*F).o\\):," << odir << "\\1:,g\" >$@" << endl << endl;        t << odir << ".deps/%.d: %.c\n\t";        if(project->isActiveConfig("echo_depend_creation"))            t << "@echo Creating depend for $<" << "\n\t";        t << mkdir_p_asstring("$(@D)") << "\n\t"          << "@$(CC) " << cmd << " $< | sed \"s,^\\($(*F).o\\):," << odir << "\\1:,g\" >$@" << endl << endl;        QString src[] = { "SOURCES", "GENERATED_SOURCES", QString() };        for(int x = 0; !src[x].isNull(); x++) {            QStringList &l = project->values(src[x]);            for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) {                if(!(*it).isEmpty()) {                    QString d_file;                    for(QStringList::Iterator cit = Option::c_ext.begin();                        cit != Option::c_ext.end(); ++cit) {                        if((*it).endsWith((*cit))) {                            d_file = (*it).left((*it).length() - (*cit).length());                            break;                        }                    }                    if(d_file.isEmpty()) {                        for(QStringList::Iterator cppit = Option::cpp_ext.begin();                            cppit != Option::cpp_ext.end(); ++cppit) {                            if((*it).endsWith((*cppit))) {                                d_file = (*it).left((*it).length() - (*cppit).length());                                break;                            }                        }                    }                    if(!d_file.isEmpty()) {                        d_file = odir + ".deps/" + d_file + ".d";                        QStringList deps = findDependencies((*it)).filter(QRegExp(Option::cpp_moc_ext + "$"));                        if(!deps.isEmpty())                            t << d_file << ": " << deps.join(" ") << endl;                        t << "-include " << d_file << endl;                        project->values("QMAKE_DISTCLEAN") += d_file;                    }                }            }        }    }    t << "####### Build rules" << endl << endl;    if(!project->values("SUBLIBS").isEmpty()) {        QString libdir = "tmp/";        if(!project->isEmpty("SUBLIBS_DIR"))            libdir = project->first("SUBLIBS_DIR");        t << "SUBLIBS       = ";        QStringList &l = project->values("SUBLIBS");        for(QStringList::Iterator it = l.begin(); it != l.end(); ++it)            t << libdir << "lib" << (*it) << ".a ";        t << endl << endl;    }    if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) {        QStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES");        QStringList::Iterator it;        for(it = l.begin(); it != l.end(); ++it) {            QMakeMetaInfo libinfo;            if(libinfo.readLib((*it)) && !libinfo.isEmpty("QMAKE_PRL_BUILD_DIR")) {                QString dir;                int slsh = (*it).lastIndexOf(Option::dir_sep);                if(slsh != -1)                    dir = (*it).left(slsh + 1);                QString targ = dir + libinfo.first("QMAKE_PRL_TARGET");                target_deps += " " + targ;                t << targ << ":" << "\n\t"                  << "@echo \"Creating '" << targ << "'\"" << "\n\t"                  << "(cd " << libinfo.first("QMAKE_PRL_BUILD_DIR") << ";"                  << "$(MAKE))" << endl;            }        }    }    if(!project->values("QMAKE_APP_FLAG").isEmpty()) {        QString destdir = project->first("DESTDIR");        if(!project->isEmpty("QMAKE_BUNDLE")) {            QString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION");            if(!bundle_loc.isEmpty() && !bundle_loc.startsWith("/"))                bundle_loc.prepend("/");            if(!bundle_loc.endsWith("/"))                bundle_loc += "/";            destdir += project->first("QMAKE_BUNDLE") + bundle_loc;        }        if(do_incremental) {            //incremental target            QString incr_target = var("TARGET") + "_incremental";            if(incr_target.indexOf(Option::dir_sep) != -1)                incr_target = incr_target.right(incr_target.length() -                                                (incr_target.lastIndexOf(Option::dir_sep) + 1));            QString incr_deps, incr_objs;            if(project->first("QMAKE_INCREMENTAL_STYLE") == "ld") {                QString incr_target_dir = var("OBJECTS_DIR") + incr_target + Option::obj_ext;                //actual target                t << incr_target_dir << ": $(OBJECTS)" << "\n\t"                  << "ld -r  -o "<< incr_target_dir << " $(OBJECTS)" << endl;                //communicated below                deps.prepend(incr_target_dir + " ");                incr_deps = "$(INCREMENTAL_OBJECTS)";                if(!incr_objs.isEmpty())                    incr_objs += " ";                incr_objs += incr_target_dir;            } else {                //actual target                QString incr_target_dir = var("DESTDIR") + "lib" + incr_target + "." +                                          project->values("QMAKE_EXTENSION_SHLIB").first();                QString incr_lflags = var("QMAKE_LFLAGS_SHLIB") + " ";                if(project->isActiveConfig("debug"))                    incr_lflags += var("QMAKE_LFLAGS_DEBUG");                else                    incr_lflags += var("QMAKE_LFLAGS_RELEASE");                t << incr_target_dir << ": $(INCREMENTAL_OBJECTS)" << "\n\t";                if(!destdir.isEmpty())                    t << "\n\t" << mkdir_p_asstring(destdir) << "\n\t";                t << "$(LINK) " << incr_lflags << " -o "<< incr_target_dir <<                    " $(INCREMENTAL_OBJECTS)" << endl;                //communicated below                if(!destdir.isEmpty()) {                    if(!incr_objs.isEmpty())                        incr_objs += " ";                    incr_objs += "-L" + destdir;                } else {                    if(!incr_objs.isEmpty())                        incr_objs += " ";                    incr_objs += "-L" + qmake_getpwd();                }                if(!incr_objs.isEmpty())                    incr_objs += " ";                incr_objs += " -l" + incr_target;                deps.prepend(incr_target_dir + " ");                incr_deps = "$(OBJECTS)";            }            t << "all: " << deps <<  " " << valGlue(escapeFilePaths(project->values("ALL_DEPS")),""," "," ") <<  "$(TARGET)"              << endl << endl;            //real target            t << var("TARGET") << ": " << var("PRE_TARGETDEPS") << " " << incr_deps << " " << target_deps              << " " << var("POST_TARGETDEPS") << "\n\t";            if(!destdir.isEmpty())                t << "\n\t" << mkdir_p_asstring(destdir) << "\n\t";            if(!project->isEmpty("QMAKE_PRE_LINK"))                t << var("QMAKE_PRE_LINK") << "\n\t";            t << "$(LINK) $(LFLAGS) -o $(TARGET) " << incr_deps << " " << incr_objs << " $(OBJCOMP) $(LIBS)";            if(!project->isEmpty("QMAKE_POST_LINK"))                t << "\n\t" << var("QMAKE_POST_LINK");            t << endl << endl;        } else {            t << "all: " << deps <<  " " << valGlue(escapeFilePaths(project->values("ALL_DEPS")),""," "," ") <<  "$(TARGET)"              << endl << endl;            t << "$(TARGET): " << var("PRE_TARGETDEPS") << " $(OBJECTS) "              << target_deps << " " << var("POST_TARGETDEPS") << "\n\t";            if(!destdir.isEmpty())                t << mkdir_p_asstring(destdir) << "\n\t";            if(!project->isEmpty("QMAKE_PRE_LINK"))                t << var("QMAKE_PRE_LINK") << "\n\t";            t << "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)";            if(!project->isEmpty("QMAKE_POST_LINK"))                t << "\n\t" << var("QMAKE_POST_LINK");            t << endl << endl;        }    } else if(!project->isActiveConfig("staticlib")) {        QString destdir = unescapeFilePath(project->first("DESTDIR")), incr_deps;        if(!project->isEmpty("QMAKE_BUNDLE")) {            QString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION");            if(!bundle_loc.isEmpty() && !bundle_loc.startsWith("/"))                bundle_loc.prepend("/");            if(!bundle_loc.endsWith("/"))                bundle_loc += "/";            destdir += project->first("QMAKE_BUNDLE") + bundle_loc;        }        destdir = escapeFilePath(destdir);        if(do_incremental) {            QString s_ext = project->values("QMAKE_EXTENSION_SHLIB").first();            QString incr_target = var("QMAKE_ORIG_TARGET").replace(                QRegExp("\\." + s_ext), "").replace(QRegExp("^lib"), "") + "_incremental";            if(incr_target.indexOf(Option::dir_sep) != -1)                incr_target = incr_target.right(incr_target.length() -                                                (incr_target.lastIndexOf(Option::dir_sep) + 1));            incr_target = escapeFilePath(incr_target);            if(project->first("QMAKE_INCREMENTAL_STYLE") == "ld") {                QString incr_target_dir = escapeFilePath(var("OBJECTS_DIR") + incr_target + Option::obj_ext);                //actual target                const QString link_deps = "$(OBJECTS) ";                t << incr_target_dir << ": " << link_deps << "\n\t"                  << "ld -r  -o " << incr_target_dir << " " << link_deps << endl;                //communicated below                QStringList &cmd = project->values("QMAKE_LINK_SHLIB_CMD");                cmd.first().replace("$(OBJECTS) ", "$(INCREMENTAL_OBJECTS)"); //ick                cmd.append(incr_target_dir);                deps.prepend(incr_target_dir + " ");                incr_deps = "$(INCREMENTAL_OBJECTS)";            } else {                //actual target                QString incr_target_dir = escapeFilePath(destdir + "lib" + incr_target + "." + s_ext);                QString incr_lflags = var("QMAKE_LFLAGS_SHLIB") + " ";                if(!project->isEmpty("QMAKE_LFLAGS_INCREMENTAL"))                    incr_lflags += var("QMAKE_LFLAGS_INCREMENTAL") + " ";                if(project->isActiveConfig("debug"))                    incr_lflags += var("QMAKE_LFLAGS_DEBUG");                else                    incr_lflags += var("QMAKE_LFLAGS_RELEASE");                t << incr_target_dir << ": $(INCREMENTAL_OBJECTS)" << "\n\t";                if(!destdir.isEmpty())                    t << mkdir_p_asstring(destdir) << "\n\t";                t << "$(LINK) " << incr_lflags << " -o "<< incr_target_dir <<                    " $(INCREMENTAL_OBJECTS)" << endl;                //communicated below                QStringList &cmd = project->values("QMAKE_LINK_SHLIB_CMD");                if(!destdir.isEmpty())                    cmd.append(" -L" + destdir);                cmd.append(" -l" + incr_target);                deps.prepend(incr_target_dir + " ");                incr_deps = "$(OBJECTS)";            }            t << "all: " << " " << deps << " " << valGlue(escapeFilePaths(project->values("ALL_DEPS")),""," "," ")              << " " << destdir << "$(TARGET)" << endl << endl;            //real target            t << destdir << "$(TARGET): " << var("PRE_TARGETDEPS") << " "              << incr_deps << " $(SUBLIBS) " << target_deps << " " << var("POST_TARGETDEPS");        } else {            t << "all: " << deps << " " << valGlue(escapeFilePaths(project->values("ALL_DEPS")),""," "," ") << " " <<

⌨️ 快捷键说明

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