📄 unixmake2.cpp
字号:
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 + -