📄 unixmake2.cpp
字号:
project->first("OBJECTS_DIR")) + ddir)); t << "dist: " << "\n\t" << mkdir_p_asstring(ddir_c) << "\n\t" << "$(COPY_FILE) --parents $(SOURCES) $(DIST) " << ddir_c << Option::dir_sep << " && "; if(!project->isEmpty("QMAKE_EXTRA_COMPILERS")) { const QStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); for(QStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { const QStringList &var = project->values((*it)+".input"); for(QStringList::ConstIterator var_it = var.begin(); var_it != var.end(); ++var_it) { const QStringList &val = project->values((*var_it)); if(val.isEmpty()) continue; t << "$(COPY_FILE) --parents " << val.join(" ") << " " << ddir_c << Option::dir_sep << " && "; } } } if(!project->isEmpty("TRANSLATIONS")) t << "$(COPY_FILE) --parents " << var("TRANSLATIONS") << " " << ddir_c << Option::dir_sep << " && "; t << "(cd `dirname " << ddir_c << "` && " << "$(TAR) " << packageName << ".tar " << ddir << " && " << "$(COMPRESS) " << packageName << ".tar) && " << "$(MOVE) `dirname " << ddir_c << "`" << Option::dir_sep << packageName << ".tar.gz . && " << "$(DEL_FILE) -r " << ddir_c << endl << endl; t << endl; QString clean_targets = "compiler_clean " + var("CLEAN_DEPS"); 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")) { QStringList precomp_files; QString precomph_out_dir; if(!project->isEmpty("PRECOMPILED_DIR")) precomph_out_dir = project->first("PRECOMPILED_DIR"); precomph_out_dir += project->first("QMAKE_ORIG_TARGET") + project->first("QMAKE_PCH_OUTPUT_EXT"); if (project->isActiveConfig("icc_pch_style")) { // icc style QString pchBaseName = project->first("QMAKE_ORIG_TARGET"); QString pchOutput; if(!project->isEmpty("PRECOMPILED_DIR")) pchOutput = project->first("PRECOMPILED_DIR"); pchOutput += pchBaseName + project->first("QMAKE_PCH_OUTPUT_EXT"); QString sourceFile = pchOutput + Option::cpp_ext.first(); QString objectFile = createObjectList(QStringList(sourceFile)).first(); precomp_files << precomph_out_dir << sourceFile << objectFile; } else { // gcc style precomph_out_dir += Option::dir_sep; QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX"); if(!project->isEmpty("QMAKE_CFLAGS_PRECOMPILE")) precomp_files += precomph_out_dir + header_prefix + "c"; if(!project->isEmpty("QMAKE_CXXFLAGS_PRECOMPILE")) precomp_files += precomph_out_dir + header_prefix + "c++"; if(project->isActiveConfig("objective_c")) { if(!project->isEmpty("QMAKE_OBJCFLAGS_PRECOMPILE")) precomp_files += precomph_out_dir + header_prefix + "objective-c"; if(!project->isEmpty("QMAKE_OBJCXXFLAGS_PRECOMPILE")) precomp_files += precomph_out_dir + header_prefix + "objective-c++"; } } t << "-$(DEL_FILE) " << precomp_files.join(" ") << "\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->values("SUBLIBS").isEmpty()) { QString libdir = "tmp/"; if(!project->isEmpty("SUBLIBS_DIR")) libdir = project->first("SUBLIBS_DIR"); QStringList &l = project->values("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")) { QString bundlePath = escapeFilePath(destdir + project->first("QMAKE_BUNDLE")); t << "\t-$(DEL_FILE) -r " << bundlePath << endl; } else if(project->isActiveConfig("compile_libtool")) { t << "\t-$(LIBTOOL) --mode=clean $(DEL_FILE) " << "$(TARGET)" << endl; } else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty() && !project->isActiveConfig("plugin")) { t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << endl << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) " << destdir << "$(TARGET2) $(TARGETA)" << endl; } else { t << "\t-$(DEL_FILE) " << "$(TARGET)" << " " << endl; } t << varGlue("QMAKE_DISTCLEAN","\t-$(DEL_FILE) "," ","\n"); { 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 pchInput = project->first("PRECOMPILED_HEADER"); t << "###### Prefix headers" << endl; QString comps[] = { "C", "CXX", "OBJC", "OBJCXX", QString() }; for(int i = 0; !comps[i].isNull(); i++) { QString pchFlags = var("QMAKE_" + comps[i] + "FLAGS_PRECOMPILE"); if(pchFlags.isEmpty()) continue; QString cflags; if(comps[i] == "OBJC" || comps[i] == "OBJCXX") cflags += " $(CFLAGS)"; else cflags += " $(" + comps[i] + "FLAGS)"; QString pchBaseName = project->first("QMAKE_ORIG_TARGET"); QString pchOutput; if(!project->isEmpty("PRECOMPILED_DIR")) pchOutput = project->first("PRECOMPILED_DIR"); pchOutput += pchBaseName + project->first("QMAKE_PCH_OUTPUT_EXT"); if (project->isActiveConfig("icc_pch_style")) { // icc style QString sourceFile = pchOutput + Option::cpp_ext.first(); QString objectFile = createObjectList(QStringList(sourceFile)).first(); t << pchOutput << ": " << pchInput << " " << findDependencies(pchInput).join(" \\\n\t\t") << "\n\techo \"// Automatically generated, do not modify\" > " << sourceFile << "\n\trm -f " << pchOutput; pchFlags = pchFlags.replace("${QMAKE_PCH_TEMP_SOURCE}", sourceFile) .replace("${QMAKE_PCH_TEMP_OBJECT}", objectFile); } else { // gcc style QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX"); pchOutput += Option::dir_sep; QString pchOutputDir = pchOutput, pchOutputFile; if(comps[i] == "C") { pchOutputFile = "c"; } else if(comps[i] == "CXX") { pchOutputFile = "c++"; } else if(project->isActiveConfig("objective_c")) { if(comps[i] == "OBJC") pchOutputFile = "objective-c"; else if(comps[i] == "OBJCXX") pchOutputFile = "objective-c++"; } if(pchOutputFile.isEmpty()) continue; pchOutput += header_prefix + pchOutputFile; t << pchOutput << ": " << pchInput << " " << findDependencies(pchInput).join(" \\\n\t\t") << "\n\t" << mkdir_p_asstring(pchOutputDir); } pchFlags = pchFlags.replace("${QMAKE_PCH_INPUT}", pchInput) .replace("${QMAKE_PCH_OUTPUT_BASE}", pchBaseName) .replace("${QMAKE_PCH_OUTPUT}", pchOutput); QString compiler; if(comps[i] == "C" || comps[i] == "OBJC" || comps[i] == "OBJCXX") compiler = "$(CC)"; else compiler = "$(CXX)"; // compile command t << "\n\t" << compiler << cflags << " $(INCPATH) " << pchFlags << endl << endl; } } writeExtraTargets(t); writeExtraCompilerTargets(t);}void UnixMakefileGenerator::init2(){ //version handling if(project->isEmpty("VERSION")) project->values("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->values("VER_MAJ").append(l[0]); project->values("VER_MIN").append(l[1]); project->values("VER_PAT").append(l[2]); if(project->isEmpty("QMAKE_FRAMEWORK_VERSION")) project->values("QMAKE_FRAMEWORK_VERSION").append(project->values("VER_MAJ").first()); if (!project->values("QMAKE_APP_FLAG").isEmpty()) { 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 += "/"; project->values("TARGET").first().prepend(project->first("QMAKE_BUNDLE") + bundle_loc); } if(!project->isEmpty("TARGET")) project->values("TARGET").first().prepend(project->first("DESTDIR")); if (!project->values("QMAKE_CYGWIN_EXE").isEmpty()) project->values("TARGET_EXT").append(".exe"); } else if (project->isActiveConfig("staticlib")) { project->values("TARGET").first().prepend("lib"); project->values("TARGET").first() += ".a"; if(project->values("QMAKE_AR_CMD").isEmpty()) project->values("QMAKE_AR_CMD").append("$(AR) $(TARGET) $(OBJECTS)"); } else { project->values("TARGETA").append(project->first("DESTDIR") + "lib" + project->first("TARGET") + ".a"); if(project->isActiveConfig("compile_libtool")) project->values("TARGET_la") = QStringList(project->first("DESTDIR") + "lib" + project->first("TARGET") + Option::libtool_ext); if (!project->values("QMAKE_AR_CMD").isEmpty()) project->values("QMAKE_AR_CMD").first().replace("(TARGET)","(TARGETA)"); else project->values("QMAKE_AR_CMD").append("$(AR) $(TARGETA) $(OBJECTS)"); if(project->isActiveConfig("compile_libtool")) { project->values("TARGET") = project->values("TARGET_la"); } else 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 += "/"; project->values("TARGET_").append(project->first("QMAKE_BUNDLE") + bundle_loc + unescapeFilePath(project->first("TARGET"))); project->values("TARGET_x.y").append(project->first("QMAKE_BUNDLE") + "/Versions/" +
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -