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

📄 pbuilder_pbx.cpp

📁 qt专门用于嵌入式的图形开发GUI
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    //ROOT_GROUP    t << "\t\t" << keyFor("QMAKE_PBX_ROOT_GROUP") << " = {" << "\n"      << "\t\t\t" << "children = (" << "\n"      << varGlue("QMAKE_PBX_GROUPS", "\t\t\t\t", ",\n\t\t\t\t", "\n")      << "\t\t\t" << ");" << "\n"      << "\t\t\t" << "isa = PBXGroup;" << "\n"      << "\t\t\t" << "refType = 4;" << "\n"      << "\t\t\t" << "sourceTree = \"<group>\";" << "\n"      << "\t\t" << "};" << "\n";    //ROOT    t << "\t\t" << keyFor("QMAKE_PBX_ROOT") << " = {" << "\n"      << "\t\t\t" << "buildSettings = {" << "\n"      << "\t\t\t" << "};" << "\n"      << "\t\t\t" << "buildStyles = (" << "\n"      << varGlue("QMAKE_PBX_BUILDSTYLES", "\t\t\t\t", ",\n\t\t\t\t", "\n")      << "\t\t\t" << ");" << "\n"      << "\t\t\t" << "isa = PBXProject;" << "\n"      << "\t\t\t" << "mainGroup = " << keyFor("QMAKE_PBX_ROOT_GROUP") << ";" << "\n"      << "\t\t\t" << "projectDirPath = \"\";" << "\n";    if(pbVersion >= 42)        t << "\t\t\t" << "buildConfigurationList = " << keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_LIST") << ";" << "\n";    t << "\t\t\t" << "projectReferences = (" << "\n";    {	QStringList &libdirs = project->variables()["QMAKE_PBX_SUBDIRS"];	for(QStringList::Iterator it = libdirs.begin(); it != libdirs.end(); ++it)	    t << "\t\t\t\t" << "{" << "\n"	      << "\t\t\t\t\t" << "ProductGroup = " << keyFor((*it) + "_PRODUCTGROUP") << ";" << "\n"	      << "\t\t\t\t\t" << "ProjectRef = " << keyFor((*it) + "_PROJECTREF") << ";" << "\n"	      << "\t\t\t\t" << "}," << "\n";    }    t << "\t\t\t" << ");" << "\n"      << "\t\t\t" << "targets = (" << "\n"      << "\t\t\t" << ");" << "\n"      << "\t\t" << "};" << "\n";    //FOOTER    t << "\t" << "};" << "\n"      << "\t" << "rootObject = " << keyFor("QMAKE_PBX_ROOT") << ";" << "\n"      << "}" << endl;    return TRUE;}boolProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t){    int i;    QStringList tmp;    bool did_preprocess = FALSE;    //HEADER    const int pbVersion = pbuilderVersion();    t << "// !$*UTF8*$!" << "\n"      << "{" << "\n"      << "\t" << "archiveVersion = 1;" << "\n"      << "\t" << "classes = {" << "\n" << "\t" << "};" << "\n"      << "\t" << "objectVersion = " << pbVersion << ";" << "\n"      << "\t" << "objects = {" << endl;    //MAKE QMAKE equivelant    if(!project->isActiveConfig("no_autoqmake") && project->projectFile() != "(stdin)") {	QString mkfile = pbx_dir + Option::dir_sep + "qt_makeqmake.mak";	QFile mkf(mkfile);	if(mkf.open(IO_WriteOnly | IO_Translate)) {	    debug_msg(1, "pbuilder: Creating file: %s", mkfile.latin1());	    QTextStream mkt(&mkf);	    writeHeader(mkt);	    mkt << "QMAKE    = "	<<		(project->isEmpty("QMAKE_QMAKE") ? QString("$(QTDIR)/bin/qmake") :		 var("QMAKE_QMAKE")) << endl;	    writeMakeQmake(mkt);	    mkf.close();	}	QString phase_key = keyFor("QMAKE_PBX_MAKEQMAKE_BUILDPHASE");	mkfile = fileFixify(mkfile, QDir::currentDirPath());	project->variables()["QMAKE_PBX_PRESCRIPT_BUILDPHASES"].append(phase_key);	t << "\t\t" << phase_key << " = {" << "\n"	  << "\t\t\t" << "buildActionMask = 2147483647;" << "\n"	  << "\t\t\t" << "files = (" << "\n"	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "generatedFileNames = (" << "\n"	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "isa = PBXShellScriptBuildPhase;" << "\n"	  << "\t\t\t" << "name = \"Qt Qmake\";" << "\n"	  << "\t\t\t" << "neededFileNames = (" << "\n"	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "shellPath = /bin/sh;" << "\n"	  << "\t\t\t" << "shellScript = \"make -C " << QDir::currentDirPath() <<	    " -f " << mkfile << "\";" << "\n"	  << "\t\t" << "};" << "\n";    }    //DUMP SOURCES    QMap<QString, QStringList> groups;    QString srcs[] = { "HEADERS", "SOURCES", "SRCMOC", "UICIMPLS", "QMAKE_IMAGE_COLLECTION",		       "FORMS", "QMAKE_INTERNAL_INCLUDED_FILES", QString::null };    for(i = 0; !srcs[i].isNull(); i++) {	tmp = project->variables()[srcs[i]];	if(srcs[i] == "QMAKE_INTERNAL_INCLUDED_FILES") {	    QString pfile = project->projectFile();	    if(pfile != "(stdin)")		tmp.prepend(pfile);	}	QStringList &src_list = project->variables()["QMAKE_PBX_" + srcs[i]];	QStringList &root_group_list = project->variables()["QMAKE_PBX_GROUPS"];	//hard coded groups..	QString src_group;	if(srcs[i] == "SOURCES")	    src_group = "Sources";	else if(srcs[i] == "HEADERS")	    src_group = "Headers";	else if(srcs[i] == "SRCMOC")	    src_group = "Sources [moc]";	else if(srcs[i] == "UICIMPLS" || srcs[i] == "FORMS")	    src_group = "Sources [uic]";	else if(srcs[i] == "QMAKE_IMAGE_COLLECTION")	    src_group = "Sources [images]";	else if(srcs[i] == "QMAKE_INTERNAL_INCLUDED_FILES")	    src_group = "Sources [qmake]";	for(QStringList::Iterator it = tmp.begin(); it != tmp.end(); ++it) {	    QStringList files = (*it);	    bool buildable = TRUE;	    if(srcs[i] == "FORMS") {		QString form_dot_h = (*it) + Option::h_ext.first();		if(QFile::exists(form_dot_h))		    files += form_dot_h;		buildable = FALSE;	    } else if(srcs[i] == "HEADERS" || srcs[i] == "QMAKE_INTERNAL_INCLUDED_FILES") {		buildable = FALSE;	    }	    files = fileFixify(files);	    for(QStringList::Iterator file_it = files.begin(); file_it != files.end(); ++file_it) {		QString file = (*file_it);		if(file.length() >= 2 && (file[0] == '"' || file[0] == '\'') && file[(int) file.length()-1] == file[0])		    file = file.mid(1, file.length()-2);		if(file.endsWith(Option::cpp_moc_ext) || file.endsWith(Option::prl_ext))		    continue;		bool in_root = TRUE;		QString src_key = keyFor(file), name = file;		if(project->isActiveConfig("flat")) {		    QString flat_file = fileFixify(file, QDir::currentDirPath(), Option::output_dir, TRUE);		    if(flat_file.find(Option::dir_sep) != -1) {			QStringList dirs = QStringList::split(Option::dir_sep, flat_file);			name = dirs.back();		    }		} else {		    QString flat_file = fileFixify(file, QDir::currentDirPath(), Option::output_dir, TRUE);		    if(QDir::isRelativePath(flat_file) && flat_file.find(Option::dir_sep) != -1) {			QString last_grp("QMAKE_PBX_" + src_group + "_HEIR_GROUP");			QStringList dirs = QStringList::split(Option::dir_sep, flat_file);			name = dirs.back();			dirs.pop_back(); //remove the file portion as it will be added via src_key			for(QStringList::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) {			    QString new_grp(last_grp + Option::dir_sep + (*dir_it)), new_grp_key(keyFor(new_grp));			    if(dir_it == dirs.begin()) {				if(!src_list.contains(new_grp_key))				    src_list.append(new_grp_key);			    } else {				if(!groups[last_grp].contains(new_grp_key))				    groups[last_grp] += new_grp_key;			    }			    last_grp = new_grp;			}			groups[last_grp] += src_key;			in_root = FALSE;		    }		}		if(in_root)		    src_list.append(src_key);		//source reference		t << "\t\t" << src_key << " = {" << "\n"		  << "\t\t\t" << "isa = PBXFileReference;" << "\n"		  << "\t\t\t" << "name = \"" << name << "\";" << "\n"		  << "\t\t\t" << "path = \"" << file << "\";" << "\n"		  << "\t\t\t" << "refType = " << reftypeForFile(file) << ";" << "\n";                if(pbVersion >= 38) {		    QString filetype;		    for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) {			if(file.endsWith((*cppit))) {			    filetype = "sourcecode.cpp.cpp";			    break;			}		    }		    if(!filetype.isNull())			t << "\t\t\t" << "lastKnownFileType = " << filetype << ";" << "\n";		}		t << "\t\t" << "};" << "\n";		if(buildable) { //build reference		    QString obj_key = file + ".o";		    obj_key = keyFor(obj_key);		    t << "\t\t" << obj_key << " = {" << "\n"		      << "\t\t\t" << "fileRef = " << src_key << ";" << "\n"		      << "\t\t\t" << "isa = PBXBuildFile;" << "\n"		      << "\t\t\t" << "settings = {" << "\n"		      << "\t\t\t\t" << "ATTRIBUTES = (" << "\n"		      << "\t\t\t\t" << ");" << "\n"		      << "\t\t\t" << "};" << "\n"		      << "\t\t" << "};" << "\n";		    project->variables()["QMAKE_PBX_OBJ"].append(obj_key);		}	    }	}	if(!src_list.isEmpty()) {	    if(srcs[i] == "SOURCES") {		if(project->first("TEMPLATE") == "app" && !project->isEmpty("RC_FILE")) { //Icon		    QString icns_file = keyFor("ICNS_FILE");		    src_list.append(icns_file);		    t << "\t\t" << icns_file << " = {" << "\n"		      << "\t\t\t" << "isa = PBXFileReference;" << "\n"		      << "\t\t\t" << "path = \"" << project->first("RC_FILE") << "\";" << "\n"		      << "\t\t\t" << "refType = " << reftypeForFile(project->first("RC_FILE")) << ";" << "\n"		      << "\t\t" << "};" << "\n";		    t << "\t\t" << keyFor("ICNS_FILE_REFERENCE") << " = {" << "\n"		      << "\t\t\t" << "fileRef = " << icns_file << ";" << "\n"		      << "\t\t\t" << "isa = PBXBuildFile;" << "\n"		      << "\t\t\t" << "settings = {" << "\n"		      << "\t\t\t" << "};" << "\n"		      << "\t\t" << "};" << "\n";		}	    }	    QString src_group_key = keyFor(src_group);	    if(root_group_list.findIndex(src_group_key) == -1)		root_group_list += src_group_key;            QStringList &group = groups[src_group];            for(QStringList::Iterator src_it = src_list.begin(); src_it != src_list.end(); ++src_it) {                if(group.findIndex((*src_it)) == -1)                    group += (*src_it);            }	}    }    for(QMap<QString, QStringList>::Iterator grp_it = groups.begin(); grp_it != groups.end(); ++grp_it) {	t << "\t\t" << keyFor(grp_it.key()) << " = {" << "\n"	  << "\t\t\t" << "isa = PBXGroup;" << "\n"	  << "\t\t\t" << "children = (" << "\n"	  << valGlue(grp_it.data(), "\t\t\t\t", ",\n\t\t\t\t", "\n")	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "name = \"" << grp_it.key().section(Option::dir_sep, -1) << "\";" << "\n"	  << "\t\t\t" << "refType = 4;" << "\n"	  << "\t\t" << "};" << "\n";    }    //PREPROCESS BUILDPHASE (just a makefile)    if(!project->isEmpty("UICIMPLS") || !project->isEmpty("SRCMOC") || !project->isEmpty("IMAGES") ||	!project->isEmpty("YACCSOURCES") || !project->isEmpty("LEXSOURCES")) {	QString mkfile = pbx_dir + Option::dir_sep + "qt_preprocess.mak";	QFile mkf(mkfile);	if(mkf.open(IO_WriteOnly | IO_Translate)) {	    did_preprocess = TRUE;	    debug_msg(1, "pbuilder: Creating file: %s", mkfile.latin1());	    QTextStream mkt(&mkf);	    writeHeader(mkt);	    mkt << "MOC       = " << Option::fixPathToTargetOS(var("QMAKE_MOC")) << endl;	    mkt << "UIC       = " << Option::fixPathToTargetOS(var("QMAKE_UIC")) << endl;	    mkt << "LEX       = " << var("QMAKE_LEX") << endl;	    mkt << "LEXFLAGS  = " << var("QMAKE_LEXFLAGS") << endl;	    mkt << "YACC      = " << var("QMAKE_YACC") << endl;	    mkt << "YACCFLAGS = " << var("QMAKE_YACCFLAGS") << endl;	    mkt << "DEL_FILE  = " << var("QMAKE_DEL_FILE") << endl;	    mkt << "MOVE      = " << var("QMAKE_MOVE") << endl << endl;	    mkt << "FORMS = " << varList("UICIMPLS") << endl;	    mkt << "IMAGES = " << varList("QMAKE_IMAGE_COLLECTION") << endl;	    mkt << "MOCS = " << varList("SRCMOC") << endl;	    mkt << "PARSERS =";	    if(!project->isEmpty("YACCSOURCES")) {		QStringList &yaccs = project->variables()["YACCSOURCES"];		for(QStringList::Iterator yit = yaccs.begin(); yit != yaccs.end(); ++yit) {		    QFileInfo fi((*yit));		    mkt << " " << fi.dirPath() << Option::dir_sep << fi.baseName(TRUE)			<< Option::yacc_mod << Option::cpp_ext.first();		}	    }	    if(!project->isEmpty("LEXSOURCES")) {		QStringList &lexs = project->variables()["LEXSOURCES"];		for(QStringList::Iterator lit = lexs.begin(); lit != lexs.end(); ++lit) {		    QFileInfo fi((*lit));		    mkt << " " << fi.dirPath() << Option::dir_sep << fi.baseName(TRUE)			<< Option::lex_mod << Option::cpp_ext.first();		}	    }	    mkt << "\n";

⌨️ 快捷键说明

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