unixmake2.cpp

来自「qt-x11-free-3.0.3.tar.gz minigui图形界面工具」· C++ 代码 · 共 870 行 · 第 1/3 页

CPP
870
字号
			QStringList deps = findDependencies((*it)).grep(QRegExp(Option::moc_ext + "$"));			if(!deps.isEmpty())			    t << d_file << ": " << deps.join(" ") << endl;;			t << "-include " << d_file << endl;		    }		}	    }	}    }    t << "####### Build rules" << endl << endl;    if(!project->variables()["SUBLIBS"].isEmpty()) {	QString libdir = "tmp/";	if(!project->isEmpty("SUBLIBS_DIR"))	    libdir = project->first("SUBLIBS_DIR");	t << "SUBLIBS= ";	QStringList &l = project->variables()["SUBLIBS"];	for(QStringList::Iterator it = l.begin(); it != l.end(); ++it)	    t << libdir << "lib" << (*it) << ".a ";	t << endl << endl;    }    if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) {	QStringList &l = project->variables()["QMAKE_PRL_INTERNAL_FILES"];	QStringList::Iterator it;	for(it = l.begin(); it != l.end(); ++it) {	    QMakeProject proj;	    if(proj.read((*it), QDir::currentDirPath()) && !proj.isEmpty("QMAKE_PRL_BUILD_DIR")) {		QString dir;		int slsh = (*it).findRev(Option::dir_sep);		if(slsh != -1)		    dir = (*it).left(slsh + 1);		QString targ = dir + proj.first("QMAKE_PRL_TARGET");		deps += " " + targ;		t << targ << ":" << "\n\t"		  << "@echo \"Creating '" << targ << "'\"" << "\n\t"		  << "(cd " << proj.first("QMAKE_PRL_BUILD_DIR") << ";"		  << "$(MAKE) )" << endl;	    }	}    }    if(!project->variables()["QMAKE_APP_FLAG"].isEmpty()) {	QString destdir = project->first("DESTDIR");	if(do_incremental) {	    //incremental target	    QString incr_target = var("TARGET") + "_incremental";	    if(incr_target.find(Option::dir_sep) != -1)		incr_target = incr_target.right(incr_target.length() -						(incr_target.findRev(Option::dir_sep) + 1));	    QString incr_deps, incr_objs;	    if(project->first("QMAKE_INCREMENTAL_STYLE") == "ld") {		QString incr_target_dir = var("OBJECTS_DIR") + incr_target + Option::obj_ext;		//actual target		t << incr_target_dir << ": $(OBJECTS)" << "\n\t"		  << "ld -r  -o "<< incr_target_dir << " $(OBJECTS)" << endl;		//communicated below		deps.prepend(incr_target_dir + " ");		incr_deps = "$(UICDECLS) $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC) $(OBJMOC)";		if(!incr_objs.isEmpty())		    incr_objs += " ";		incr_objs += incr_target_dir;	    } else {		//actual target		QString incr_target_dir = var("DESTDIR") + "lib" + incr_target + "." +					  project->variables()["QMAKE_EXTENSION_SHLIB"].first();		QString incr_lflags = var("QMAKE_LFLAGS_SHLIB") + " ";		if(project->isActiveConfig("debug"))		    incr_lflags += var("QMAKE_LFLAGS_DEBUG");		else		    incr_lflags += var("QMAKE_LFLAGS_RELEASE");		t << incr_target_dir << ": $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)" << "\n\t";		if(!destdir.isEmpty())		    t << "\n\t" << "test -d " << destdir << " || mkdir -p " << destdir << "\n\t";		t << "$(LINK) " << incr_lflags << " -o "<< incr_target_dir <<		    " $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)" << endl;		//communicated below		if(!destdir.isEmpty()) {		    if(!incr_objs.isEmpty())			incr_objs += " ";		    incr_objs += "-L" + destdir;		}		if(!incr_objs.isEmpty())		    incr_objs += " ";		incr_objs += " -l" + incr_target;		deps.prepend(incr_target_dir + " ");		incr_deps = "$(UICDECLS) $(OBJECTS) $(OBJMOC)";	    }	    t << "all: " << deps <<  " " << varGlue("ALL_DEPS",""," "," ") <<  "$(TARGET)"	      << endl << endl;	    //real target	    t << var("TARGET") << ": " << " " << incr_deps << " " << var("TARGETDEPS") << "\n\t";	    if(!destdir.isEmpty())		t << "\n\t" << "test -d " << destdir << " || mkdir -p " << destdir << "\n\t";	    if(!project->isEmpty("QMAKE_PRE_LINK"))		t << var("QMAKE_PRE_LINK") << "\n\t";	    t << "$(LINK) $(LFLAGS) -o $(TARGET) " << incr_deps << " " << incr_objs << " $(LIBS)";	    if(!project->isEmpty("QMAKE_POST_LINK"))		t << "\n\t" << var("QMAKE_POST_LINK");	    t << endl << endl;	} else {	    t << "all: " << deps <<  " " << varGlue("ALL_DEPS",""," "," ") <<  "$(TARGET)"	      << endl << endl;	    t << "$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) " << var("TARGETDEPS") << "\n\t";	    if(!destdir.isEmpty())		t << "test -d " << destdir << " || mkdir -p " << destdir << "\n\t";	    if(!project->isEmpty("QMAKE_PRE_LINK"))		t << var("QMAKE_PRE_LINK") << "\n\t";	    t << "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)";	    if(!project->isEmpty("QMAKE_POST_LINK"))		t << "\n\t" << var("QMAKE_POST_LINK");	    t << endl << endl;	}    } else if(!project->isActiveConfig("staticlib")) {	QString destdir = project->first("DESTDIR"), incr_deps;	if(do_incremental) {	    QString s_ext = project->variables()["QMAKE_EXTENSION_SHLIB"].first();	    QString incr_target = var("QMAKE_ORIG_TARGET").replace(		QRegExp("\\." + s_ext), "").replace(QRegExp("^lib"), "") + "_incremental";	    if(incr_target.find(Option::dir_sep) != -1)		incr_target = incr_target.right(incr_target.length() -						(incr_target.findRev(Option::dir_sep) + 1));	    if(project->first("QMAKE_INCREMENTAL_STYLE") == "ld") {		QString incr_target_dir = var("OBJECTS_DIR") + incr_target + Option::obj_ext;		//actual target		const QString link_deps = "$(UICDECLS) $(OBJECTS) $(OBJMOC)";		t << incr_target_dir << ": " << link_deps << "\n\t"		  << "ld -r  -o " << incr_target_dir << " " << link_deps << endl;		//communicated below		QStringList &cmd = project->variables()["QMAKE_LINK_SHLIB_CMD"];		cmd.first().replace(QRegExp("\\$\\(OBJECTS\\) \\$\\(OBJMOC\\)"),				    "$(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)"); //ick		cmd.append(incr_target_dir);		deps.prepend(incr_target_dir + " ");		incr_deps = "$(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)";	    } else {		//actual target		QString incr_target_dir = var("DESTDIR") + "lib" + incr_target + "." + s_ext;		QString incr_lflags = var("QMAKE_LFLAGS_SHLIB") + " ";		if(!project->isEmpty("QMAKE_LFLAGS_INCREMENTAL"))		    incr_lflags += var("QMAKE_LFLAGS_INCREMENTAL") + " ";		if(project->isActiveConfig("debug"))		    incr_lflags += var("QMAKE_LFLAGS_DEBUG");		else		    incr_lflags += var("QMAKE_LFLAGS_RELEASE");		t << incr_target_dir << ": $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)" << "\n\t";		if(!destdir.isEmpty())		    t << "test -d " << destdir << " || mkdir -p " << destdir << "\n\t";		t << "$(LINK) " << incr_lflags << " -o "<< incr_target_dir <<		    " $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)" << endl;		//communicated below		QStringList &cmd = project->variables()["QMAKE_LINK_SHLIB_CMD"];		if(!destdir.isEmpty())		    cmd.append(" -L" + destdir);		cmd.append(" -l" + incr_target);		deps.prepend(incr_target_dir + " ");		incr_deps = "$(UICDECLS) $(OBJECTS) $(OBJMOC)";	    }	    t << "all: " << " " << deps << " " << varGlue("ALL_DEPS",""," ","")	      << " " <<  var("DESTDIR_TARGET") << endl << endl;	    //real target	    t << var("DESTDIR_TARGET") << ": " << incr_deps << " $(SUBLIBS) " <<		var("TARGETDEPS");	} else {	    t << "all: " << deps << " " << varGlue("ALL_DEPS",""," ","") << " " <<		var("DESTDIR_TARGET") << endl << endl;	    t << var("DESTDIR_TARGET") << ":  $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) " <<		var("TARGETDEPS");	}	if(!destdir.isEmpty())	    t << "\n\t" << "test -d " << destdir << " || mkdir -p " << destdir;	if(!project->isEmpty("QMAKE_PRE_LINK"))	    t << "\n\t" << var("QMAKE_PRE_LINK");	if(project->isActiveConfig("plugin")) {	    t << "\n\t"	      << "-rm -f $(TARGET)" << "\n\t"	      << var("QMAKE_LINK_SHLIB_CMD");	    if(!destdir.isEmpty())		t << "\n\t"		  << "-mv $(TARGET) " << var("DESTDIR");	    if(!project->isEmpty("QMAKE_POST_LINK"))		t << "\n\t" << var("QMAKE_POST_LINK") << "\n\t";	    t << endl << endl;	} else if(project->variables()["QMAKE_HPUX_SHLIB"].isEmpty()) {	    t << "\n\t"	      << "-rm -f $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)" << "\n\t"	      << var("QMAKE_LINK_SHLIB_CMD") << "\n\t";	    t << varGlue("QMAKE_LN_SHLIB",""," "," $(TARGET) $(TARGET0)")  << "\n\t"	      << varGlue("QMAKE_LN_SHLIB",""," "," $(TARGET) $(TARGET1)") << "\n\t"	      << varGlue("QMAKE_LN_SHLIB",""," "," $(TARGET) $(TARGET2)");	    if(!destdir.isEmpty())		t << "\n\t"		  << "-rm -f " << var("DESTDIR") << "$(TARGET)\n\t"		  << "-rm -f " << var("DESTDIR") << "$(TARGET0)\n\t"		  << "-rm -f " << var("DESTDIR") << "$(TARGET1)\n\t"		  << "-rm -f " << var("DESTDIR") << "$(TARGET2)\n\t"		  << "-mv $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) " << var("DESTDIR");	    if(!project->isEmpty("QMAKE_POST_LINK"))		t << "\n\t" << var("QMAKE_POST_LINK");	    t << endl << endl;	} else {	    t << "\n\t"	      << "-rm -f $(TARGET) $(TARGET0)" << "\n\t"	      << var("QMAKE_LINK_SHLIB_CMD") << "\n\t";	    t << varGlue("QMAKE_LN_SHLIB",""," "," $(TARGET) $(TARGET0)");	    if(!destdir.isEmpty())		t  << "\n\t"		   << "-rm -f " << var("DESTDIR") << "$(TARGET)\n\t"		   << "-rm -f " << var("DESTDIR") << "$(TARGET0)\n\t"		   << "-mv $(TARGET) $(TARGET0) " << var("DESTDIR");	    if(!project->isEmpty("QMAKE_POST_LINK"))		t << "\n\t" << var("QMAKE_POST_LINK");	    t << endl << endl;	}	t << endl << endl;	if (! project->isActiveConfig("plugin")) {	    t << "staticlib: $(TARGETA)" << endl << endl;	    t << "$(TARGETA): $(UICDECLS) $(OBJECTS) $(OBJMOC)";	    if(do_incremental)		t << " $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)";	    t << var("TARGETDEPS") << "\n\t"	      << "-rm -f $(TARGETA) " << "\n\t"	      << var("QMAKE_AR_CMD");	    if(do_incremental)		t << " $(INCREMENTAL_OBJECTS) $(INCREMENTAL_OBJMOC)";	    if(!project->isEmpty("QMAKE_RANLIB"))		t << "\n\t" << "$(RANLIB) $(TARGETA)";	    t << endl << endl;	}    } else {	t << "all: " << deps << " " << varGlue("ALL_DEPS",""," "," ") << "$(TARGET)" << "\n\n"	  << "staticlib: $(TARGET)" << "\n\n"	  << "$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) " << var("TARGETDEPS") << "\n\t";	if(!project->isEmpty("DESTDIR")) {	    QString destdir = project->first("DESTDIR");	    t << "test -d " << destdir << " || mkdir -p " << destdir << "\n\t";	}	t << "-rm -f $(TARGET)" << "\n\t"	  << var("QMAKE_AR_CMD") << "\n\t";	if(!project->isEmpty("QMAKE_POST_LINK"))	    t << var("QMAKE_POST_LINK") << "\n\t";	if(!project->isEmpty("QMAKE_RANLIB"))	    t << "$(RANLIB) $(TARGET)";	t << endl << endl;    }    t << "mocables: $(SRCMOC)" << endl << endl;    //this is an implicity depend on moc, so it will be built if necesary, however    //moc itself shouldn't have this dependancy - this is a little kludgy but it is    //better than the alternative for now.    QString moc = project->first("QMAKE_MOC"), target = project->first("TARGET");    fixEnvVariables(target);    fixEnvVariables(moc);    if(target != moc) {	t << "$(MOC): \n\t"	  << "( cd $(QTDIR)/src/moc ; $(MAKE) )"  << endl << endl;    }    writeMakeQmake(t);    if(!project->first("QMAKE_PKGINFO").isEmpty()) {	QString pkginfo = project->first("QMAKE_PKGINFO");	QString destdir = project->first("DESTDIR");	t << pkginfo << ": " << "\n\t";	if(!destdir.isEmpty())	    t << "@test -d " << destdir << " || mkdir -p " << destdir << "\n\t";	t << "@rm -f " << pkginfo << "\n\t"	  << "@echo \"APPL????\" >" << pkginfo << endl;    }    if(!project->first("QMAKE_INFO_PLIST").isEmpty()) {	QString info_plist = project->first("QMAKE_INFO_PLIST"),	       info_plist_out = project->first("QMAKE_INFO_PLIST_OUT");	QString destdir = project->first("DESTDIR");	t << info_plist_out << ": " << "\n\t";	if(!destdir.isEmpty())	    t << "@test -d " << destdir << " || mkdir -p " << destdir << "\n\t";	t << "@rm -f " << info_plist_out << "\n\t"	  << "@cp \"" << info_plist << "\" \"" << info_plist_out << "\"" << endl;	if(!project->first("RC_FILE").isEmpty()) {	    QString dir = destdir + "../Resources/";	    t << dir << "application.icns:" << "\n\t"	      << "@test -d " << dir << " || mkdir -p " << dir << "\n\t"

⌨️ 快捷键说明

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