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

📄 mingw_make.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            project->values("QMAKE_COPY_FILE").append("$(COPY)");        if(project->isEmpty("QMAKE_COPY_DIR"))            project->values("QMAKE_COPY_DIR").append("xcopy /s /q /y /i");        if(project->isEmpty("QMAKE_INSTALL_FILE"))            project->values("QMAKE_INSTALL_FILE").append("$(COPY_FILE)");        if(project->isEmpty("QMAKE_INSTALL_PROGRAM"))            project->values("QMAKE_INSTALL_PROGRAM").append("$(COPY_FILE)");        if(project->isEmpty("QMAKE_INSTALL_DIR"))            project->values("QMAKE_INSTALL_DIR").append("$(COPY_DIR)");        if(project->values("MAKEFILE").isEmpty())            project->values("MAKEFILE").append("Makefile");        if(project->values("QMAKE_QMAKE").isEmpty())            project->values("QMAKE_QMAKE").append("qmake");        return;    }    project->values("TARGET_PRL").append(project->first("TARGET"));    processVars();    if (!project->values("RES_FILE").isEmpty()) {        project->values("QMAKE_LIBS") += escapeFilePaths(project->values("RES_FILE"));    }    // LIBS defined in Profile comes first for gcc    project->values("QMAKE_LIBS") += escapeFilePaths(project->values("LIBS"));    QString targetfilename = project->values("TARGET").first();    QStringList &configs = project->values("CONFIG");    if(project->isActiveConfig("qt_dll"))        if(configs.indexOf("qt") == -1)            configs.append("qt");    if(project->isActiveConfig("dll")) {        QString destDir = "";        if(!project->first("DESTDIR").isEmpty())            destDir = Option::fixPathToTargetOS(project->first("DESTDIR") + Option::dir_sep, false, false);        project->values("MINGW_IMPORT_LIB").prepend(destDir + "lib" + project->first("TARGET")                                                         + project->first("TARGET_VERSION_EXT") + ".a");	project->values("QMAKE_LFLAGS").append(QString("-Wl,--out-implib,") + project->first("MINGW_IMPORT_LIB"));    }    if(!project->values("DEF_FILE").isEmpty())        project->values("QMAKE_LFLAGS").append(QString("-Wl,") + project->first("DEF_FILE"));    MakefileGenerator::init();    // precomp    if (!project->first("PRECOMPILED_HEADER").isEmpty()        && project->isActiveConfig("precompile_header")) {        QString preCompHeader = var("PRECOMPILED_DIR")		         + QFileInfo(project->first("PRECOMPILED_HEADER")).fileName();	preCompHeaderOut = preCompHeader + ".gch";	project->values("QMAKE_CLEAN").append(preCompHeaderOut + Option::dir_sep + "c");	project->values("QMAKE_CLEAN").append(preCompHeaderOut + Option::dir_sep + "c++");	project->values("QMAKE_RUN_CC").clear();	project->values("QMAKE_RUN_CC").append("$(CC) -c -include " + preCompHeader +                                                    " $(CFLAGS) $(INCPATH) -o $obj $src");        project->values("QMAKE_RUN_CC_IMP").clear();	project->values("QMAKE_RUN_CC_IMP").append("$(CC)  -c -include " + preCompHeader +                                                        " $(CFLAGS) $(INCPATH) -o $@ $<");        project->values("QMAKE_RUN_CXX").clear();	project->values("QMAKE_RUN_CXX").append("$(CXX) -c -include " + preCompHeader +                                                     " $(CXXFLAGS) $(INCPATH) -o $obj $src");        project->values("QMAKE_RUN_CXX_IMP").clear();	project->values("QMAKE_RUN_CXX_IMP").append("$(CXX) -c -include " + preCompHeader +                                                         " $(CXXFLAGS) $(INCPATH) -o $@ $<");    }    if(project->isActiveConfig("dll")) {        project->values("QMAKE_CLEAN").append(project->first("MINGW_IMPORT_LIB"));    }}void MingwMakefileGenerator::fixTargetExt(){    if (project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {        project->values("TARGET_EXT").append(".a");        project->values("QMAKE_LFLAGS").append("-static");        project->values("TARGET").first() =  "lib" + project->first("TARGET");    } else {        Win32MakefileGenerator::fixTargetExt();    }}void MingwMakefileGenerator::writeIncPart(QTextStream &t){    t << "INCPATH       = ";    QStringList &incs = project->values("INCLUDEPATH");    for(QStringList::Iterator incit = incs.begin(); incit != incs.end(); ++incit) {        QString inc = (*incit);        inc.replace(QRegExp("\\\\$"), "");        inc.replace(QRegExp("\""), "");        t << "-I" << quote << inc << quote << " ";    }    t << "-I" << quote << specdir() << quote      << endl;}void MingwMakefileGenerator::writeLibsPart(QTextStream &t){    if(project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {        t << "LIB        =        " << var("QMAKE_LIB") << endl;    } else {        t << "LINK        =        " << var("QMAKE_LINK") << endl;        t << "LFLAGS        =        " << var("QMAKE_LFLAGS") << endl;        t << "LIBS        =        ";        if(!project->values("QMAKE_LIBDIR").isEmpty())            writeLibDirPart(t);        t << var("QMAKE_LIBS").replace(QRegExp("(\\slib|^lib)")," -l") << endl;    }}void MingwMakefileGenerator::writeLibDirPart(QTextStream &t){    QStringList libDirs = project->values("QMAKE_LIBDIR");    for (int i = 0; i < libDirs.size(); ++i)        libDirs[i].remove("\"");    t << valGlue(libDirs,"-L"+quote,quote+" -L" +quote,quote) << " ";}void MingwMakefileGenerator::writeObjectsPart(QTextStream &t){    if (project->values("OBJECTS").count() < var("QMAKE_LINK_OBJECT_MAX").toInt()) {        objectsLinkLine = "$(OBJECTS)";    } else if (project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {	QString ar_script_file = var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("TARGET");	if (!var("BUILD_NAME").isEmpty()) {	    ar_script_file += "." + var("BUILD_NAME");	}	createArObjectScriptFile(ar_script_file, var("DEST_TARGET"), project->values("OBJECTS"));        objectsLinkLine = "ar -M < " + ar_script_file;    } else {        QString ld_script_file = var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("TARGET");	if (!var("BUILD_NAME").isEmpty()) {	    ld_script_file += "." + var("BUILD_NAME");	}	createLdObjectScriptFile(ld_script_file, project->values("OBJECTS"));        objectsLinkLine = ld_script_file;    }    Win32MakefileGenerator::writeObjectsPart(t);}void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t){    t << "first: all" << endl;    t << "all: " << fileFixify(Option::output.fileName()) << " " << varGlue("ALL_DEPS"," "," "," ") << " $(DESTDIR_TARGET)" << endl << endl;    t << "$(DESTDIR_TARGET): " << var("PRE_TARGETDEPS") << " $(OBJECTS) " << var("POST_TARGETDEPS");    if(!project->isEmpty("QMAKE_PRE_LINK"))        t << "\n\t" <<var("QMAKE_PRE_LINK");    if(project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {	if (project->values("OBJECTS").count() < var("QMAKE_LINK_OBJECT_MAX").toInt()) {            t << "\n\t" << "$(LIB) $(DESTDIR_TARGET) " << objectsLinkLine << " " ;        } else {            t << "\n\t" << objectsLinkLine << " " ;        }    } else {        t << "\n\t" << "$(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) " << objectsLinkLine << " " << " $(LIBS)";    }    if(!project->isEmpty("QMAKE_POST_LINK"))        t << "\n\t" <<var("QMAKE_POST_LINK");    t << endl;}void MingwMakefileGenerator::writeRcFilePart(QTextStream &t){    const QString rc_file = fileFixify(project->first("RC_FILE"));    if (!rc_file.isEmpty()) {        t << var("RES_FILE") << ": " << rc_file << "\n\t"          << var("QMAKE_RC") << " -i " << rc_file << " -o " << var("RES_FILE") 	  << " --include-dir=" << fileInfo(rc_file).path() << endl << endl;    }}void MingwMakefileGenerator::processPrlVariable(const QString &var, const QStringList &l){    if (var == "QMAKE_PRL_LIBS") {        QString where = "QMAKE_LIBS";        if (!project->isEmpty("QMAKE_INTERNAL_PRL_LIBS"))            where = project->first("QMAKE_INTERNAL_PRL_LIBS");        QStringList &out = project->values(where);        for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {            out.removeAll((*it));            out.append((*it));        }    } else {        Win32MakefileGenerator::processPrlVariable(var, l);    }}QStringList &MingwMakefileGenerator::findDependencies(const QString &file){    QStringList &aList = MakefileGenerator::findDependencies(file);    // Note: The QMAKE_IMAGE_COLLECTION file have all images    // as dependency, so don't add precompiled header then    if (file == project->first("QMAKE_IMAGE_COLLECTION")        || preCompHeaderOut.isEmpty())        return aList;    for (QStringList::Iterator it = Option::c_ext.begin(); it != Option::c_ext.end(); ++it) {        if (file.endsWith(*it)) {            QString cHeader = preCompHeaderOut + Option::dir_sep + "c";            if (!aList.contains(cHeader))                aList += cHeader;            break;        }    }    for (QStringList::Iterator it = Option::cpp_ext.begin(); it != Option::cpp_ext.end(); ++it) {        if (file.endsWith(*it)) {            QString cppHeader = preCompHeaderOut + Option::dir_sep + "c++";            if (!aList.contains(cppHeader))                aList += cppHeader;            break;        }    }    return aList;}

⌨️ 快捷键说明

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