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

📄 unixmake.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			    if(QFile::exists("lib" + stub + modifs[modif] + "." + (*extit))) {				(*it) = "lib" + stub + modifs[modif] + "." + (*extit);				found = TRUE;				break;			    }			}		    }		    if(!found && project->isActiveConfig("compile_libtool")) {			for(MakefileDependDir *mdd = libdirs.first(); mdd; mdd = libdirs.next() ) {			    if(QFile::exists(mdd->local_dir + Option::dir_sep + "lib" + stub + modifs[modif] + Option::libtool_ext)) {				(*it) = mdd->real_dir + Option::dir_sep + "lib" + stub + modifs[modif] + Option::libtool_ext;				found = TRUE;				break;			    }			}		    }		    if(found)			break;		}	    }	}    }    return FALSE;}QString linkLib(const QString &file, const QString &libName) {  QString ret;  QRegExp reg("^.*lib(" + libName + "[^./=]*).*$");  if(reg.exactMatch(file))    ret = "-l" + reg.cap(1);  return ret;}voidUnixMakefileGenerator::processPrlFiles(){    QDict<void> processed;    QPtrList<MakefileDependDir> libdirs;    libdirs.setAutoDelete(TRUE);    const QString lflags[] = { "QMAKE_LIBDIR_FLAGS", "QMAKE_LIBS", QString::null };    for(int i = 0; !lflags[i].isNull(); i++) {	for(bool ret = FALSE; TRUE; ret = FALSE) {	    QStringList l_out;	    QStringList &l = project->variables()[lflags[i]];	    for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) {		project->variables()["QMAKE_CURRENT_PRL_LIBS"].clear();		QString opt = (*it).stripWhiteSpace();		if(opt.startsWith("-")) {		    if(opt.startsWith("-L")) {			QString r = opt.right(opt.length() - 2), l = r;			fixEnvVariables(l);			libdirs.append(new MakefileDependDir(r.replace("\"",""),							     l.replace("\"","")));		    } else if(opt.startsWith("-l") && !processed[opt]) {			QString lib = opt.right(opt.length() - 2);			for(MakefileDependDir *mdd = libdirs.first(); mdd; mdd = libdirs.next() ) { 			    if(!project->isActiveConfig("compile_libtool")) { //give them the .libs.. 				QString la = mdd->local_dir + Option::dir_sep + "lib" + lib + Option::libtool_ext; 				if(QFile::exists(la) && QFile::exists(mdd->local_dir + Option::dir_sep + ".libs")) { 				    l_out.append("-L" + mdd->real_dir + Option::dir_sep + ".libs"); 				    libdirs.append(new MakefileDependDir(mdd->real_dir +  Option::dir_sep + ".libs", 									 mdd->local_dir + Option::dir_sep + ".libs")); 				} 			    }			    QString prl = mdd->local_dir + Option::dir_sep + "lib" + lib;			    if(processPrlFile(prl)) {				if(prl.startsWith(mdd->local_dir))				    prl.replace(0, mdd->local_dir.length(), mdd->real_dir);				opt = linkLib(prl, lib);				processed.insert(opt, (void*)1);				ret = TRUE;				break;			    }			}		    } else if(project->isActiveConfig("macx") && opt.startsWith("-framework")) {			if(opt.length() > 11) {			    opt = opt.mid(11);			} else {			    ++it;			    opt = (*it);			}			QString prl = "/System/Library/Frameworks/" + opt +				      ".framework/" + opt;			if(processPrlFile(prl))			    ret = TRUE;			l_out.append("-framework");		    }		    if(!opt.isEmpty())			l_out.append(opt);		    l_out = combineSetLFlags(l_out, project->variables()["QMAKE_CURRENT_PRL_LIBS"]);		} else {		    QString lib = opt;		    if(!processed[lib] && processPrlFile(lib)) {		      processed.insert(lib, (void*)1);		      ret = TRUE;		    }#if 0		    if(ret)		      opt = linkLib(lib, "");#endif		    if(!opt.isEmpty())		      l_out.append(opt);		    l_out = combineSetLFlags(l_out, project->variables()["QMAKE_CURRENT_PRL_LIBS"]);		}	    }	    if(ret && l != l_out)		l = l_out;	    else 		break;	}    }}QStringUnixMakefileGenerator::defaultInstall(const QString &t){    if(t != "target" || project->first("TEMPLATE") == "subdirs")	return QString();    bool resource = FALSE;    const QString root = "$(INSTALL_ROOT)";    QStringList &uninst = project->variables()[t + ".uninstall"];    QString ret, destdir=project->first("DESTDIR");    QString targetdir = Option::fixPathToTargetOS(project->first("target.path"), FALSE);    if(!destdir.isEmpty() && destdir.right(1) != Option::dir_sep)	destdir += Option::dir_sep;    targetdir = fileFixify(targetdir);    if(targetdir.right(1) != Option::dir_sep)	targetdir += Option::dir_sep;    QStringList links;    QString target="$(TARGET)";    if(project->first("TEMPLATE") == "app") {	target = "$(QMAKE_TARGET)";	if(project->isActiveConfig("resource_fork") && !project->isActiveConfig("console")) {	    destdir += "../../../";	    target += ".app";	    resource = TRUE;	}    } else if(project->first("TEMPLATE") == "lib") {	if(project->isActiveConfig("create_prl") && !project->isActiveConfig("no_install_prl") &&	   !project->isEmpty("QMAKE_INTERNAL_PRL_FILE")) {	    QString dst_prl = project->first("QMAKE_INTERNAL_PRL_FILE");	    int slsh = dst_prl.findRev('/');	    if(slsh != -1)		dst_prl = dst_prl.right(dst_prl.length() - slsh - 1);	    dst_prl = root + targetdir + dst_prl;	    ret += "-$(INSTALL_FILE) \"" + project->first("QMAKE_INTERNAL_PRL_FILE") + "\" \"" + dst_prl + "\"";	    if(!uninst.isEmpty())		uninst.append("\n\t");	    uninst.append("-$(DEL_FILE) \"" + dst_prl + "\"");	}	if(project->isActiveConfig("create_libtool") && !project->isActiveConfig("compile_libtool")) {	    QString src_lt = var("QMAKE_ORIG_TARGET");	    int slsh = src_lt.findRev(Option::dir_sep);	    if(slsh != -1)		src_lt = src_lt.right(src_lt.length() - slsh);	    int dot = src_lt.find('.');	    if(dot != -1)		src_lt = src_lt.left(dot);	    src_lt += Option::libtool_ext;	    src_lt.prepend("lib");	    QString dst_lt = root + targetdir + src_lt;	    if(!project->isEmpty("DESTDIR")) {		src_lt.prepend(var("DESTDIR"));		src_lt = Option::fixPathToLocalOS(fileFixify(src_lt,							     QDir::currentDirPath(), Option::output_dir));	    }	    if(!ret.isEmpty())		ret += "\n\t";	    ret += "-$(INSTALL_FILE) \"" + src_lt + "\" \"" + dst_lt + "\"";	    if(!uninst.isEmpty())		uninst.append("\n\t");	    uninst.append("-$(DEL_FILE) \"" + dst_lt + "\"");	}	if(project->isActiveConfig("create_pc")) {	    QString src_pc = var("QMAKE_ORIG_TARGET");	    int slsh = src_pc.findRev(Option::dir_sep);	    if(slsh != -1)		src_pc = src_pc.right(src_pc.length() - slsh);	    int dot = src_pc.find('.');	    if(dot != -1)		src_pc = src_pc.left(dot);	    src_pc += ".pc";	    QString d = root + targetdir + "pkgconfig" + Option::dir_sep;	    QString dst_pc = d + src_pc;	    if(!project->isEmpty("DESTDIR")) {		src_pc.prepend(var("DESTDIR"));		src_pc = Option::fixPathToLocalOS(fileFixify(src_pc,							     QDir::currentDirPath(), Option::output_dir));	    }	    if(!ret.isEmpty())		ret += "\n\t";	    ret += mkdir_p_asstring(d) + "\n\t";	    ret += "-$(INSTALL_FILE) \"" + src_pc + "\" \"" + dst_pc + "\"";	    if(!uninst.isEmpty())		uninst.append("\n\t");	    uninst.append("-$(DEL_FILE) \"" + dst_pc + "\"");	}	if ( project->isEmpty("QMAKE_CYGWIN_SHLIB") ) {	    if ( !project->isActiveConfig("staticlib") && !project->isActiveConfig("plugin") ) {		if ( project->isEmpty("QMAKE_HPUX_SHLIB") ) {		    links << "$(TARGET0)" << "$(TARGET1)" << "$(TARGET2)";		} else {		    links << "$(TARGET0)";	        }	    }	}    }    if(!resource && project->isActiveConfig("compile_libtool")) {	QString src_targ = target;	if(src_targ == "$(TARGET)")	    src_targ = "$(TARGETL)";	QString dst_dir = fileFixify(targetdir);	if(QDir::isRelativePath(dst_dir))	    dst_dir = Option::fixPathToTargetOS(Option::output_dir + Option::dir_sep + dst_dir);	ret = "-$(LIBTOOL) --mode=install cp \"" + src_targ + "\" \"" + root + dst_dir + "\"";	uninst.append("-$(LIBTOOL) --mode=uninstall \"" + src_targ + "\"");    } else {	QString src_targ = target;	if(!destdir.isEmpty())	    src_targ = Option::fixPathToTargetOS(destdir + target, FALSE);	QString dst_targ = root + fileFixify(targetdir + target, 					     QDir::currentDirPath(), Option::output_dir);	if(!ret.isEmpty())	    ret += "\n\t";	if(resource)	    ret += "$(DEL_FILE) -r \"" + dst_targ + "\"" + "\n\t";	if(!ret.isEmpty())	    ret += "\n\t";	ret += QString(resource ? "-$(INSTALL_DIR)" : "-$(INSTALL_FILE)") + " \"" +	       src_targ + "\" \"" + dst_targ + "\"";	if(!project->isActiveConfig("debug") && !project->isEmpty("QMAKE_STRIP") &&	   (project->first("TEMPLATE") != "lib" || !project->isActiveConfig("staticlib"))) {	    ret += "\n\t-" + var("QMAKE_STRIP");	    if(project->first("TEMPLATE") == "lib" && !project->isEmpty("QMAKE_STRIPFLAGS_LIB"))		ret += " " + var("QMAKE_STRIPFLAGS_LIB");	    else if(project->first("TEMPLATE") == "app" && !project->isEmpty("QMAKE_STRIPFLAGS_APP"))		ret += " " + var("QMAKE_STRIPFLAGS_APP");	    if(resource)		ret = " \"" + dst_targ + "/Contents/MacOS/$(QMAKE_TARGET)\"";	    else		ret += " \"" + dst_targ + "\"";	}	if(!uninst.isEmpty())	    uninst.append("\n\t");	if(resource)	    uninst.append("-$(DEL_FILE) -r \"" + dst_targ + "\"");	else	    uninst.append("-$(DEL_FILE) \"" + dst_targ + "\"");	if(!links.isEmpty()) {	    for(QStringList::Iterator it = links.begin(); it != links.end(); it++) {		if(Option::target_mode == Option::TARG_WIN_MODE ||		   Option::target_mode == Option::TARG_MAC9_MODE) {		} else if(Option::target_mode == Option::TARG_UNIX_MODE ||			  Option::target_mode == Option::TARG_MACX_MODE) {		    QString link = Option::fixPathToTargetOS(destdir + (*it), FALSE);		    int lslash = link.findRev(Option::dir_sep);		    if(lslash != -1)			link = link.right(link.length() - (lslash + 1));		    QString dst_link = root + targetdir + link;		    ret += "\n\t-$(SYMLINK) \"$(TARGET)\" \"" + dst_link + "\"";		    if(!uninst.isEmpty())			uninst.append("\n\t");		    uninst.append("-$(DEL_FILE) \"" + dst_link + "\"");		}	    }	}    }    return ret;}

⌨️ 快捷键说明

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