📄 unixmake2.cpp
字号:
} 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")) { if(!project->variables()["TARGET"].isEmpty()) soname += project->first("TARGET"); } else if(!project->isEmpty("QMAKE_BUNDLE_NAME")) { soname += project->first("TARGET_x.y"); } else if(!project->variables()["TARGET_x"].isEmpty()) { soname += project->first("TARGET_x"); } if(!soname.isEmpty()) { if(project->isActiveConfig("absolute_library_soname") && project->values("INSTALLS").indexOf("target") != -1 && !project->isEmpty("target.path")) { QString instpath = Option::fixPathToTargetOS(project->first("target.path")); if(!instpath.endsWith(Option::dir_sep)) instpath += Option::dir_sep; soname.prepend(instpath); } project->variables()["QMAKE_LFLAGS_SONAME"].first() += soname; } } if (project->variables()["QMAKE_LINK_SHLIB_CMD"].isEmpty()) project->variables()["QMAKE_LINK_SHLIB_CMD"].append( "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)"); } if (!project->variables()["QMAKE_APP_FLAG"].isEmpty()) { project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_APP"]; project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_APP"]; project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_APP"]; } else if (project->isActiveConfig("dll")) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -