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

📄 pbuilder_pbx.cpp

📁 Trolltech公司发布的基于C++图形开发环境
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	QString phase_key = keyFor("QMAKE_PBX_SUBLIBS_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 Sublibs\";" << "\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";    }    //LIBRARY BUILDPHASE    if(!project->isEmpty("QMAKE_PBX_LIBRARIES")) {	tmp = project->variables()["QMAKE_PBX_LIBRARIES"];	if(!tmp.isEmpty()) {	    QString grp("External Frameworks and Libraries"), key = keyFor(grp);	    project->variables()["QMAKE_PBX_GROUPS"].append(key);	    t << "\t\t" << key << " = {" << "\n"	      << "\t\t\t" << "children = (" << "\n"	      << varGlue("QMAKE_PBX_LIBRARIES", "\t\t\t\t", ",\n\t\t\t\t", "\n")	      << "\t\t\t" << ");" << "\n"	      << "\t\t\t" << "isa = PBXGroup;" << "\n"	      << "\t\t\t" << "name = \"" << grp << "\"" << ";" << "\n"	      << "\t\t\t" << "path = \"\";" << "\n"	      << "\t\t\t" << "refType = 4;" << "\n"	      << "\t\t" << "};" << "\n";	}    }    {	QString grp("Frameworks & Libraries"), key = keyFor(grp);	project->variables()["QMAKE_PBX_BUILDPHASES"].append(key);	t << "\t\t" << key << " = {" << "\n"	  << "\t\t\t" << "buildActionMask = 2147483647;" << "\n"	  << "\t\t\t" << "files = (" << "\n"	  << varGlue("QMAKE_PBX_BUILD_LIBRARIES", "\t\t\t\t", ",\n\t\t\t\t", "\n")	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "isa = PBXFrameworksBuildPhase;" << "\n"	  << "\t\t\t" << "name = \"" << grp << "\";" << "\n"	  << "\t\t" << "};" << "\n";    }    if(!project->isActiveConfig("console") && project->first("TEMPLATE") == "app") { //BUNDLE RESOURCES	QString grp("Bundle Resources"), key = keyFor(grp);	project->variables()["QMAKE_PBX_BUILDPHASES"].append(key);	t << "\t\t" << key << " = {" << "\n"	  << "\t\t\t" << "buildActionMask = 2147483647;" << "\n"	  << "\t\t\t" << "files = (" << "\n"	  << (!project->isEmpty("RC_FILE") ? keyFor("ICNS_FILE_REFERENCE") : QString(""))	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "isa = PBXResourcesBuildPhase;" << "\n"	  << "\t\t\t" << "name = \"" << grp << "\";" << "\n"	  << "\t\t" << "};" << "\n";    }    { //INSTALL BUILDPHASE (sh script)	QString targ = project->first("TARGET");	if(project->first("TEMPLATE") == "app" ||	   (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") &&	    project->isActiveConfig("frameworklib")))	    targ = project->first("QMAKE_ORIG_TARGET");	int slsh = targ.findRev(Option::dir_sep);	if(slsh != -1)	    targ = targ.right(targ.length() - slsh - 1);	fixEnvVariables(targ);	QStringList links;	if(project->first("TEMPLATE") == "app") {	    if(project->isActiveConfig("resource_fork") && !project->isActiveConfig("console"))		targ += ".app";	} else if(!project->isActiveConfig("staticlib") && !project->isActiveConfig("plugin") && 	   !project->isActiveConfig("frameworklib")) {	    QString li[] = { "TARGET_", "TARGET_x", "TARGET_x.y", QString::null };	    for(int n = 0; !li[n].isNull(); n++) {		QString t = project->first(li[n]);		slsh = t.findRev(Option::dir_sep);		if(slsh != -1)		    t = t.right(t.length() - slsh);		fixEnvVariables(t);		links << t;	    }	}	QString script = pbx_dir + Option::dir_sep + "qt_install.sh";	QFile shf(script);	if(shf.open(IO_WriteOnly | IO_Translate)) {	    debug_msg(1, "pbuilder: Creating file: %s", script.latin1());	    QString targ = project->first("QMAKE_ORIG_TARGET"), cpflags;	    if(project->first("TEMPLATE") == "app") {		targ = project->first("TARGET");		if(!project->isActiveConfig("console")) {		    targ += ".app";		    cpflags += "-r ";		}	    } else if(!project->isActiveConfig("frameworklib")) {		if(project->isActiveConfig("staticlib"))		    targ = project->first("TARGET");		else		    targ = project->first("TARGET_");	    }            int slsh = targ.findRev(Option::dir_sep);            if(slsh != -1)                targ = targ.right(targ.length() - slsh - 1);	    QString dstdir = project->first("DESTDIR");	    fixEnvVariables(dstdir);	    QTextStream sht(&shf);	    sht << "#!/bin/sh" << endl;	    //copy the actual target	    sht << "OUT_TARG=\"${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}\"\n"                 << "if [ -e \"$OUT_TARG\" ]; then" << "\n"                << "  [ \"$OUT_TARG\" = \"" 		<< (dstdir.isEmpty() ? QDir::currentDirPath() + QDir::separator(): dstdir) << targ << "\" ] || " 		<< "[ \"$OUT_TARG\" = \"" << targ << "\" ] || " 		<< "(rm -rf \"" << dstdir << targ << "\"; "                << "cp -r \"$OUT_TARG\" " << "\"" << dstdir << targ << "\")" << "\n"                << "fi" << endl;	    //rename as a framework	    if(project->first("TEMPLATE") == "lib" && project->isActiveConfig("frameworklib") && !project->isActiveConfig("plugin"))		sht << "ln -sf \"" << targ <<  "\" " << "\"" << dstdir << targ << "\"" << endl;	    //create all the version symlinks (just to be like unixmake)	    for(QStringList::Iterator it = links.begin(); it != links.end(); ++it) {		if(targ != (*it)) 		    sht << "ln -sf \"" << targ <<  "\" " << "\"" << dstdir << (*it) << "\"" << endl;	    }	    shf.close();#ifdef Q_OS_UNIX	    chmod(script.latin1(), S_IRWXU | S_IRWXG);#endif	    QString phase_key = keyFor("QMAKE_PBX_INSTALL_BUILDPHASE");	    script = fileFixify(script, QDir::currentDirPath());	    project->variables()["QMAKE_PBX_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 Install\";" << "\n"	      << "\t\t\t" << "neededFileNames = (" << "\n"	      << "\t\t\t" << ");" << "\n"	      << "\t\t\t" << "shellPath = /bin/sh;" << "\n"	      << "\t\t\t" << "shellScript = \"" << script << "\";" << "\n"	      << "\t\t" << "};" << "\n";	}    }    if(/*ideType() == MAC_XCODE &&*/ !project->isEmpty("QMAKE_PBX_PRESCRIPT_BUILDPHASES") && 0) {	// build reference	t << "\t\t" << keyFor("QMAKE_PBX_PRESCRIPT_BUILDREFERENCE") << " = {" << "\n"	  << "\t\t\t" << "includeInIndex = 0;" << "\n"	  << "\t\t\t" << "isa = PBXFileReference;" << "\n"	  << "\t\t\t" << "path = preprocessor.out;" << "\n"	  << "\t\t\t" << "refType = 3;" << "\n"	  << "\t\t\t" << "sourceTree = BUILT_PRODUCTS_DIR;" << "\n"	  << "\t\t" << "};" << "\n";	project->variables()["QMAKE_PBX_PRODUCTS"].append(keyFor("QMAKE_PBX_PRESCRIPTS_BUILDREFERENCE"));	//build phase        QString prescript_key = keyFor("QMAKE_PBX_PRESCRIPTS_BUILDPHASE");        project->variables()["QMAKE_PBX_TARGETS"].append(prescript_key);	t << "\t\t" << prescript_key << " = {" << "\n"	  << "\t\t\t" << "buildPhases = (" << "\n"	  << varGlue("QMAKE_PBX_PRESCRIPT_BUILDPHASES", "\t\t\t\t", ",\n\t\t\t\t", "\n")	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "buildRules = (" << "\n"	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "buildSettings = {" << "\n"	  << "\t\t\t" << "};" << "\n"	  << "\t\t\t" << "dependencies = (" << "\n"	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "isa = PBXNativeTarget;" << "\n"	  << "\t\t\t" << "name = \"Qt Preprocessor Steps\";" << "\n"	  << "\t\t\t" << "productName = \"Qt Preprocessor Steps\";" << "\n"	  << "\t\t\t" << "productReference = " << keyFor("QMAKE_PBX_PRESCRIPTS_BUILDREFERENCE") << ";" << "\n"	  << "\t\t\t" << "productType = \"com.apple.product-type.tool\";" << "\n"	  << "\t\t" << "};" << "\n";	//dependency	t << "\t\t" << keyFor("QMAKE_PBX_PRESCRIPTS_DEPENDENCY") << " = {" << "\n"	  << "\t\t\t" << "isa = PBXTargetDependency;" << "\n"	  << "\t\t\t" << "target = " << keyFor("QMAKE_PBX_PRESCRIPTS_BUILDPHASE") << ";" << "\n"	  << "\t\t" << "};" << "\n";	project->variables()["QMAKE_PBX_TARGET_DEPENDS"].append(keyFor("QMAKE_PBX_PRESCRIPTS_DEPENDENCY"));	project->variables()["QMAKE_PBX_PRESCRIPT_BUILDPHASES"].clear(); //these are already consumed above    }    //DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER    //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" << "name = " << project->first("QMAKE_ORIG_TARGET") << ";" << "\n"      << "\t\t\t" << "path = \"\";" << "\n"      << "\t\t\t" << "refType = 4;" << "\n"      << "\t\t" << "};" << "\n";    //REFERENCE    project->variables()["QMAKE_PBX_PRODUCTS"].append(keyFor(pbx_dir + "QMAKE_PBX_REFERENCE"));    t << "\t\t" << keyFor(pbx_dir + "QMAKE_PBX_REFERENCE") << " = {" << "\n"      << "\t\t\t" << "fallbackIsa = PBXFileReference;" << "\n";    if(project->first("TEMPLATE") == "app") {	QString targ = project->first("QMAKE_ORIG_TARGET");	if(project->isActiveConfig("resource_fork") && !project->isActiveConfig("console")) {	    targ += ".app";	    t << "\t\t\t" << "isa = PBXApplicationReference;" << "\n";	} else {	    t << "\t\t\t" << "isa = PBXExecutableFileReference;" << "\n";	}	QString app = (!project->isEmpty("DESTDIR") ? project->first("DESTDIR") + project->first("QMAKE_ORIG_TARGET") : 		       QDir::currentDirPath()) + Option::dir_sep + targ;	t << "\t\t\t" << "name = " <<  targ << ";" << "\n"	  << "\t\t\t" << "path = \"" << targ << "\";" << "\n"	  << "\t\t\t" << "refType = " << reftypeForFile(app) << ";" << "\n";    } else {	QString lib = project->first("QMAKE_ORIG_TARGET");	if(project->isActiveConfig("staticlib")) {	    lib = project->first("TARGET");	} else if(!project->isActiveConfig("frameworklib")) {	    if(project->isActiveConfig("plugin"))		lib = project->first("TARGET");	    else		lib = project->first("TARGET_");	}	int slsh = lib.findRev(Option::dir_sep);	if(slsh != -1)	    lib = lib.right(lib.length() - slsh - 1);	t << "\t\t\t" << "isa = PBXLibraryReference;" << "\n"	  << "\t\t\t" << "expectedFileType = \"compiled.mach-o.dylib\";" << "\n"	  << "\t\t\t" << "path = " << lib << ";\n"	  << "\t\t\t" << "refType = " << 3/*reftypeForFile(lib)*/ << ";" << "\n"	  << "\t\t\t" << "sourceTree = BUILT_PRODUCTS_DIR" << ";" << "\n";    }    t << "\t\t" << "};" << "\n";    { //Products group	QString grp("Products"), key = keyFor(grp);	project->variables()["QMAKE_PBX_GROUPS"].append(key);	t << "\t\t" << key << " = {" << "\n"	  << "\t\t\t" << "children = (" << "\n"	  << varGlue("QMAKE_PBX_PRODUCTS", "\t\t\t\t", ",\n\t\t\t\t", "\n")	  << "\t\t\t" << ");" << "\n"	  << "\t\t\t" << "isa = PBXGroup;" << "\n"	  << "\t\t\t" << "name = Products;" << "\n"	  << "\t\t\t" << "refType = 4;" << "\n"	  << "\t\t" << "};" << "\n";    }    //TARGET    QString target_key = keyFor("QMAKE_PBX_TARGET");    project->variables()["QMAKE_PBX_TARGETS"].append(target_key);    t << "\t\t" << target_key << " = {" << "\n"      << "\t\t\t" << "buildPhases = (" << "\n"      << varGlue("QMAKE_PBX_PRESCRIPT_BUILDPHASES", "\t\t\t\t", ",\n\t\t\t\t", ",\n")      << varGlue("QMAKE_PBX_BUILDPHASES", "\t\t\t\t", ",\n\t\t\t\t", "\n")      << "\t\t\t" << ");" << "\n"      << "\t\t\t" << "buildSettings = {" << "\n"      << "\t\t\t\t" << "CC = \"" << fixEnvsList("QMAKE_CC") << "\";" << "\n"      << "\t\t\t\t" << "CPLUSPLUS = \"" << fixEnvsList("QMAKE_CXX") << "\";" << "\n"      << "\t\t\t\t" << "FRAMEWORK_SEARCH_PATHS = \"\";" << "\n"      << "\t\t\t\t" << "HEADER_SEARCH_PATHS = \"" << fixEnvsList("INCLUDEPATH") << " " << fixEnvs(specdir()) << "\";" << "\n"      << "\t\t\t\t" << "LIBRARY_SEARCH_PATHS = \"" << var("QMAKE_PBX_LIBPATHS") << "\";" << "\n"      << "\t\t\t\t" << "OPTIMIZATION_CFLAGS = \"\";" << "\n"      << "\t\t\t\t" << "OTHER_CFLAGS = \"" <<	fixEnvsList("QMAKE_CFLAGS") << fixQuotes(varGlue("PRL_EXPORT_DEFINES"," -D"," -D","")) <<	fixQuotes(varGlue("DEFINES"," -D"," -D","")) << "\";" << "\n"      << "\t\t\t\t" << "LEXFLAGS = \"" << var("QMAKE_LEXFLAGS") << "\";" << "\n"      << "\t\t\t\t" << "YACCFLAGS = \"" << var("QMAKE_YACCFLAGS") << "\";" << "\n"      << "\t\t\t\t" << "OTHER_CPLUSPLUSFLAGS = \"" <<	fixEnvsList("QMAKE_CXXFLAGS") << fixQuotes(varGlue("PRL_EXPORT_DEFINES"," -D"," -D","")) <<	fixQuotes(varGlue("DEFINES"," -D"," -D","")) << "\";" << "\n"      << "\t\t\t\t" << "OTHER_REZFLAGS = \"\";" << "\n"      << "\t\t\t\t" << "SECTORDER_FLAGS = \"\";" << "\n"      << "\t\t\t\t" << "WARNING_CFLAGS = \"\";" << "\n"      << "\t\t\t\t" << "PREBINDING = " << (project->isEmpty("QMAKE_DO_PREBINDING") ? "NO" : "YES") << ";" << "\n";    if(!project->isEmpty("PRECOMPILED_HEADER")) {	if (ideType() == MAC_XCODE) {	    t << "\t\t\t\t" << "GCC_PRECOMPILE_PREFIX_HEADER = \"YES\";" << "\n"		<< "\t\t\t\t" << "GCC_PREFIX_HEADER = \"" <<  project->first("PRECOMPILED_HEADER") << "\";" << "\n";	} else {	    t << "\t\t\t\t" << "PRECOMPILE_PREFIX_HEADER = \"YES\";" << "\n"		<< "\t\t\t\t" << "PREFIX_HEADER = \"" <<  project->first("PRECOMPILED_HEADER") << "\";" << "\n";	}    }    if(project->first("TEMPLATE") == "app") {        QString plist = fileFixify(project->first("QMAKE_INFO_PLIST"));        if(plist.isEmpty())            plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE");	if(QFile::exists(plist)) {	    QFile plist_in_file(plist);	    if(plist_in_file.open(IO_ReadOnly)) {		QTextStream plist_in(&plist_in_file);		QString plist_in_text = plist_in.read();                plist_in_text = plist_in_text.replace("@ICON@", (project->isEmpty("RC_FILE") ? QString("") : project->first("RC_FILE").section(Option::dir_sep, -1)));                plist_in_text = plist_in_text.replace("@EXECUTABLE@", project->first("QMAKE_ORIG_TARGET"));		QFile plist_out_file("Info.plist");		if(plist_out_file.open(IO_WriteOnly | IO_Translate)) {		    QTextStream plist_out(&plist_out_file);		    plist_out << plist_in_text;		    t << "\t\t\t\t" << "INFOPLIST_FILE = \"Info.plist\";" << "\n";		}	    }	}    }#if 1    t << "\t\t\t\t" << "BUILD_ROOT = \"" << QDir::currentDirPath() << "\";" << "\n";#endif    if(!project->isActiveConfig("staticlib")) 	t << "\t\t\t\t" << "OTHER_LDFLAGS = \"" << fixEnvsList("SUBLIBS") << " " <<	    fixEnvsList("QMAKE_LFLAGS") << " " << fixEnvsList("QMAKE_LIBDIR_FLAGS") <<	    " " << fixEnvsList("QMAKE_LIBS") << "\";" << "\n";    if(!project->isEmpty("DESTDIR")) {	QString dir = project->first("DESTDIR");	if (QDir::isRelativePath(dir))	    dir.prepend(QDir::currentDirPath() + Option::dir_sep);	t << "\t\t\t\t" << "INSTALL_DIR = \"" << dir << "\";" << "\n";    }    if ( project->first("TEMPLATE") == "lib") {	t << "\t\t\t\t" << "INSTALL_PATH = \"" <<  "\";" << "\n";    }    if(!project->isEmpty("VERSION") && project->first("VERSION") != "0.0.0") {	t << "\t\t\t\t" << "DYLIB_CURRENT_VERSION = \"" << project->first("VER_MAJ") << "." 	  << project->first("VER_MIN") << "." << project->first("VER_PAT")  << "\";" << "\n";	if(project->isEmpty("COMPAT_VERSION"))	    t << "\t\t\t\t" << "DYLIB_COMPATIBILITY_VERSION = \"" << project->first("VER_MAJ") << "." 	      << project->first("VER_MIN")  << "\";" << "\n";    }    if(!project->isEmpty("COMPAT_VERSION"))	t << "\t\t\t\t" << "DYLIB_COMPATIBILITY_VERSION = \"" << project->first("COMPAT_VERSION") << "\";" << "\n";    if(ideType() == MAC_XCODE) {	if(!project->isEmpty("OBJECTS_DIR"))	    t << "\t\t\t\t" << "OBJROOT = \"" << project->first("OBJECTS_DIR") << "\";" << "\n";    }#if 0    if(!project->isEmpty("DESTDIR"))	t << "\t\t\t\t" << "SYMROOT = \"" << project->first("DESTDIR") << "\";" << "\n";    else	t << "\t\t\t\t" << "SYMROOT = \"" << QDir::currentDirPath() << "\";" << "\n";#endif    if(project->first("TEMPLATE") == "app") {	if(ideType() == MAC_PBUILDER && !project->isActiveConfig("console"))	    t << "\t\t\t\t" << "WRAPPER_EXTENSION = app;" << "\n";	t << "\t\t\t\t" << "PRODUCT_NAME = " << project->first("QMAKE_ORIG_TARGET") << ";" << "\n";    } else {	if(!project->isActiveConfig("plugin") && project->isActiveConfig("staticlib")) {	    t << "\t\t\t\t" << "LIBRARY_STYLE = STATIC;" << "\n";	} else {	    t << "\t\t\t\t" << "LIBRARY_STYLE = DYNAMIC;" << "\n";	}	QString lib = project->first("QMAKE_ORIG_TARGET");

⌨️ 快捷键说明

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