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

📄 unixmake2.cpp

📁 qtmake 文件的代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) {
            QFileInfo fi(fileInfo((*it)));
            QString dir;
            if(fi.path() != ".")
                dir = fi.path() + Option::dir_sep;
            dir = fileFixify(dir, qmake_getpwd(), Option::output_dir);
            if(!dir.isEmpty() && dir.right(Option::dir_sep.length()) != Option::dir_sep)
                dir += Option::dir_sep;
            clean << (dir + fi.completeBaseName() + Option::lex_mod + Option::cpp_ext.first());
        }
        if(!clean.isEmpty()) {
            t << "\t-$(DEL_FILE) " << clean.join(" ") << "\n";
            clean_targets += " lexclean";
        }
    }

    if(do_incremental) {
        t << "incrclean:" << "\n";
        if(src_incremental)
            t << "\t-$(DEL_FILE) $(INCREMENTAL_OBJECTS)" << "\n";
        t << endl;
    }

    t << "clean:" << clean_targets << "\n\t";
    if(!project->isEmpty("OBJECTS")) {
        if(project->isActiveConfig("compile_libtool"))
            t << "-$(LIBTOOL) --mode=clean $(DEL_FILE) $(OBJECTS)" << "\n\t";
        else
            t << "-$(DEL_FILE) $(OBJECTS)" << "\n\t";
    }
    if(doPrecompiledHeaders() && !project->isEmpty("PRECOMPILED_HEADER")) {
        QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX");
        QString precomph_out_dir;
        if(!project->isEmpty("OBJECTS_DIR"))
            precomph_out_dir = project->first("OBJECTS_DIR");
        precomph_out_dir += project->first("QMAKE_ORIG_TARGET") + ".gch" + Option::dir_sep;
        t << "-$(DEL_FILE) " << precomph_out_dir << header_prefix + "c "
          << precomph_out_dir << header_prefix << "c++" << "\n\t";
    }
    if(!project->isEmpty("IMAGES"))
        t << varGlue("QMAKE_IMAGE_COLLECTION", "\t-$(DEL_FILE) ", " ", "") << "\n\t";
    if(src_incremental)
        t << "-$(DEL_FILE) $(INCREMENTAL_OBJECTS)" << "\n\t";
    t << varGlue("QMAKE_CLEAN","-$(DEL_FILE) "," ","\n\t")
      << "-$(DEL_FILE) *~ core *.core" << "\n"
      << varGlue("CLEAN_FILES","\t-$(DEL_FILE) "," ","") << endl << endl;
    t << "####### Sub-libraries" << endl << endl;
    if (!project->variables()["SUBLIBS"].isEmpty()) {
        QString libdir = "tmp/";
        if(!project->isEmpty("SUBLIBS_DIR"))
            libdir = project->first("SUBLIBS_DIR");
        QStringList &l = project->variables()["SUBLIBS"];
        for(it = l.begin(); it != l.end(); ++it)
            t << libdir << "lib" << (*it) << ".a" << ":\n\t"
              << var(QString("MAKELIB") + (*it)) << endl << endl;
    }

    QString destdir = project->first("DESTDIR");
    if(!destdir.isEmpty() && destdir.right(1) != Option::dir_sep)
        destdir += Option::dir_sep;
    t << "distclean: " << "clean\n";
    if(!project->isEmpty("QMAKE_BUNDLE_NAME"))
        t << "\t-$(DEL_FILE) -r " << destdir << project->first("QMAKE_BUNDLE_NAME") << endl;
    else if(project->isActiveConfig("compile_libtool"))
        t << "\t-$(LIBTOOL) --mode=clean $(DEL_FILE) " << "$(TARGET)" << endl;
    else
        t << "\t-$(DEL_FILE) " << "$(TARGET)" << " " << endl;
    if(!project->isActiveConfig("staticlib") && project->variables()["QMAKE_APP_FLAG"].isEmpty() &&
       !project->isActiveConfig("plugin") && !project->isActiveConfig("compile_libtool"))
        t << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) "
          << destdir << "$(TARGET2) $(TARGETA)" << endl;
    {
        QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
        if(!ofile.isEmpty())
            t << "\t-$(DEL_FILE) " << ofile << endl;
    }
    t << endl << endl;

    if(doPrecompiledHeaders() && !project->isEmpty("PRECOMPILED_HEADER")) {
        QString precomph = fileFixify(project->first("PRECOMPILED_HEADER"));
        t << "###### Prefix headers" << endl;
        QString comps[] = { "C", "CXX", QString() };
        for(int i = 0; !comps[i].isNull(); i++) {
            QString flags = var("QMAKE_" + comps[i] + "FLAGS_PRECOMPILE");
            flags += " $(" + comps[i] + "FLAGS)";

            QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX");
            QString outdir;
            if(!project->isEmpty("OBJECTS_DIR"))
                outdir = project->first("OBJECTS_DIR");
            outdir += project->first("QMAKE_ORIG_TARGET") + ".gch" + Option::dir_sep;

            QString compiler, outfile = outdir;
            if(comps[i] == "C") {
                outfile += header_prefix + "c";
                compiler = "$(CC) ";
            } else {
                outfile += header_prefix + "c++";
                compiler = "$(CXX) ";
            }
            t << outfile << ": " << precomph << " " << findDependencies(precomph).join(" \\\n\t\t")
              << "\n\t" << mkdir_p_asstring(outdir)
              << "\n\t" << compiler << flags << " $(INCPATH) " << precomph << " -o " << outfile << endl << endl;
        }
    }

    writeExtraTargets(t);
    writeExtraCompilerTargets(t);
}

void UnixMakefileGenerator::init2()
{
    //version handling
    if(project->variables()["VERSION"].isEmpty())
        project->variables()["VERSION"].append("1.0." +
                                               (project->isEmpty("VER_PAT") ? QString("0") :
                                                project->first("VER_PAT")));
    QStringList l = project->first("VERSION").split('.');
    l << "0" << "0"; //make sure there are three
    project->variables()["VER_MAJ"].append(l[0]);
    project->variables()["VER_MIN"].append(l[1]);
    project->variables()["VER_PAT"].append(l[2]);
    if(project->isEmpty("QMAKE_FRAMEWORK_VERSION"))
        project->variables()["QMAKE_FRAMEWORK_VERSION"].append(project->variables()["VER_MAJ"].first());

    if (!project->variables()["QMAKE_APP_FLAG"].isEmpty()) {
        if(!project->isEmpty("QMAKE_BUNDLE_NAME"))
            project->variables()["TARGET"].first().prepend(project->first("QMAKE_BUNDLE_NAME") +
                                                          "/Contents/MacOS/");
        if(!project->isEmpty("TARGET"))
            project->variables()["TARGET"].first().prepend(project->first("DESTDIR"));
       if (!project->variables()["QMAKE_CYGWIN_EXE"].isEmpty())
            project->variables()["TARGET_EXT"].append(".exe");
    } else if (project->isActiveConfig("staticlib")) {
        project->variables()["TARGET"].first().prepend("lib");
        project->variables()["TARGET"].first() += ".a";
        if(project->variables()["QMAKE_AR_CMD"].isEmpty())
            project->variables()["QMAKE_AR_CMD"].append("$(AR) $(TARGET) $(OBJECTS)");
    } else {
        project->variables()["TARGETA"].append(project->first("DESTDIR") + "lib" + project->first("TARGET") + ".a");
        if(project->isActiveConfig("compile_libtool"))
            project->variables()["TARGET_la"] = QStringList(project->first("DESTDIR") + "lib" + project->first("TARGET") + Option::libtool_ext);

        if (!project->variables()["QMAKE_AR_CMD"].isEmpty())
            project->variables()["QMAKE_AR_CMD"].first().replace("(TARGET)","(TARGETA)");
        else
            project->variables()["QMAKE_AR_CMD"].append("$(AR) $(TARGETA) $(OBJECTS)");
        if(project->isActiveConfig("compile_libtool")) {
            project->variables()["TARGET"] = project->variables()["TARGET_la"];
        } else if(project->isActiveConfig("plugin")) {
            QString prefix;
            if(!project->isActiveConfig("no_plugin_name_prefix"))
                prefix = "lib";
            project->variables()["TARGET_x.y.z"].append(prefix +
                                                        project->first("TARGET") + "." +
                                                        project->first("QMAKE_EXTENSION_PLUGIN"));
            if(project->isActiveConfig("lib_version_first"))
                project->variables()["TARGET_x"].append(prefix + project->first("TARGET") + "." +
                                                        project->first("VER_MAJ") + "." +
                                                        project->first("QMAKE_EXTENSION_PLUGIN"));
            else
                project->variables()["TARGET_x"].append(prefix + project->first("TARGET") + "." +
                                                        project->first("QMAKE_EXTENSION_PLUGIN") +
                                                        "." + project->first("VER_MAJ"));
            project->variables()["TARGET"] = project->variables()["TARGET_x.y.z"];
        } else if (!project->isEmpty("QMAKE_HPUX_SHLIB")) {
            project->variables()["TARGET_"].append("lib" + project->first("TARGET") + ".sl");
            if(project->isActiveConfig("lib_version_first"))
                project->variables()["TARGET_x"].append("lib" + project->first("VER_MAJ") + "." +
                                                        project->first("TARGET"));
            else
                project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
                                                        project->first("VER_MAJ"));
            project->variables()["TARGET"] = project->variables()["TARGET_x"];
        } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) {
            project->variables()["TARGET_"].append("lib" + project->first("TARGET") + ".a");
            if(project->isActiveConfig("lib_version_first")) {
                project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
                                                        project->first("VER_MAJ") + "." +
                                                        project->first("QMAKE_EXTENSION_SHLIB"));
                project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
                                                          project->first("VER_MAJ") +
                                                          "." + project->first("VER_MIN") + "." +
                                                          project->first("QMAKE_EXTENSION_SHLIB"));
                project->variables()["TARGET_x.y.z"].append("lib" + project->first("TARGET") + "." +
                                                            project->first("VER_MAJ") + "." +
                                                            project->first("VER_MIN") + "." +
                                                            project->first("VER_PAT") + "." +
                                                            project->first("QMAKE_EXTENSION_SHLIB"));
            } else {
                project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
                                                        project->first("QMAKE_EXTENSION_SHLIB") +
                                                        "." + project->first("VER_MAJ"));
                project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
                                                          project->first("QMAKE_EXTENSION_SHLIB") +
                                                          "." + project->first("VER_MAJ") +
                                                          "." + project->first("VER_MIN"));
                project->variables()["TARGET_x.y.z"].append("lib" + project->first("TARGET") + "." +
                                                            project->first("QMAKE_EXTENSION_SHLIB") + "." +
                                                            project->first("VER_MAJ") + "." +
                                                            project->first("VER_MIN") + "." +
                                                            project->first("VER_PAT"));
            }
            project->variables()["TARGET"] = project->variables()["TARGET_x.y.z"];
        } else if (!project->isEmpty("QMAKE_BUNDLE_NAME")) {
            project->variables()["TARGET_"].append(project->first("QMAKE_BUNDLE_NAME") +
                                                   "/" + project->first("TARGET"));
            project->variables()["TARGET_x.y"].append(project->first("QMAKE_BUNDLE_NAME") +
                                                      "/Versions/" +
                                                      project->first("QMAKE_FRAMEWORK_VERSION") +
                                                      "/" + project->first("TARGET"));
        } else {
            project->variables()["TARGET_"].append("lib" + project->first("TARGET") + "." +
                                                   project->first("QMAKE_EXTENSION_SHLIB"));
            if(project->isActiveConfig("lib_version_first")) {
                project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
                                                        project->first("VER_MAJ") + "." +
                                                        project->first("QMAKE_EXTENSION_SHLIB"));
                project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
                                                          project->first("VER_MAJ") +
                                                          "." + project->first("VER_MIN") + "." +
                                                          project->first("QMAKE_EXTENSION_SHLIB"));
                project->variables()["TARGET_x.y.z"].append("lib" + project->first("TARGET") + "." +
                                                            project->first("VER_MAJ") + "." +
                                                            project->first("VER_MIN") +  "." +
                                                            project->first("VER_PAT") + "." +
                                                            project->variables()["QMAKE_EXTENSION_SHLIB"].first());
            } else {
                project->variables()["TARGET_x"].append("lib" + project->first("TARGET") + "." +
                                                        project->first("QMAKE_EXTENSION_SHLIB") +
                                                        "." + project->first("VER_MAJ"));
                project->variables()["TARGET_x.y"].append("lib" + project->first("TARGET") + "." +
                                                      project->first("QMAKE_EXTENSION_SHLIB")
                                                      + "." + project->first("VER_MAJ") +
                                                      "." + project->first("VER_MIN"));
                project->variables()["TARGET_x.y.z"].append("lib" + project->first("TARGET") +
                                                            "." +
                                                            project->variables()[
                                                                "QMAKE_EXTENSION_SHLIB"].first() + "." +
                                                            project->first("VER_MAJ") + "." +
                                                            project->first("VER_MIN") +  "." +
                                                            project->first("VER_PAT"));
            }
            project->variables()["TARGET"] = project->variables()["TARGET_x.y.z"];
        }
        if(project->isEmpty("QMAKE_LN_SHLIB"))
            project->variables()["QMAKE_LN_SHLIB"].append("ln -s");
        if (!project->variables()["QMAKE_LFLAGS_SONAME"].isEmpty()) {
            QString soname;
            if(project->isActiveConfig("plugin")) {

⌨️ 快捷键说明

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