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

📄 msvc_nmake.cpp

📁 qt专门用于嵌入式的图形开发GUI
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    if ( !project->variables()["QMAKE_POST_LINK"].isEmpty() )	t << "\t" << var( "QMAKE_POST_LINK" ) << endl;    if(project->isActiveConfig("dll") && !project->variables()["DLLDESTDIR"].isEmpty()) {	QStringList dlldirs = project->variables()["DLLDESTDIR"];	for ( QStringList::Iterator dlldir = dlldirs.begin(); dlldir != dlldirs.end(); ++dlldir ) {	    t << "\n\t" << "-$(COPY_FILE) \"$(TARGET)\" " << *dlldir;	}    }    QString targetfilename = project->variables()["TARGET"].first();    if(project->isActiveConfig("activeqt")) {	QString version = project->variables()["VERSION"].first();	if ( version.isEmpty() )	    version = "1.0";	if ( project->isActiveConfig("dll")) {	    t << "\n\t" << ("-$(IDC) $(TARGET) /idl " + var("OBJECTS_DIR") + targetfilename + ".idl -version " + version);	    t << "\n\t" << ("-$(IDL) /nologo " + var("OBJECTS_DIR") + targetfilename + ".idl /tlb " + var("OBJECTS_DIR") + targetfilename + ".tlb");	    t << "\n\t" << ("-$(IDC) $(TARGET) /tlb " + var("OBJECTS_DIR") + targetfilename + ".tlb");	    t << "\n\t" << ("-$(IDC) $(TARGET) /regserver" );	} else {	    t << "\n\t" << ("-$(TARGET) -dumpidl " + var("OBJECTS_DIR") + targetfilename + ".idl -version " + version);	    t << "\n\t" << ("-$(IDL) /nologo " + var("OBJECTS_DIR") + targetfilename + ".idl /tlb " + var("OBJECTS_DIR") + targetfilename + ".tlb");	    t << "\n\t" << ("-$(IDC) $(TARGET) /tlb " + var("OBJECTS_DIR") + targetfilename + ".tlb");	    t << "\n\t" << "-$(TARGET) -regserver";	}    }    t << endl << endl;    if(!project->variables()["RC_FILE"].isEmpty()) {	t << var("RES_FILE") << ": " << var("RC_FILE") << "\n\t"	  << var("QMAKE_RC") << " " << var("RC_FILE") << endl << endl;    }    t << "mocables: $(SRCMOC)" << endl      << "uicables: $(UICIMPLS) $(UICDECLS)" << endl << endl;    writeMakeQmake(t);    QStringList dist_files = Option::mkfile::project_files;    if(!project->isEmpty("QMAKE_INTERNAL_INCLUDED_FILES"))	dist_files += project->variables()["QMAKE_INTERNAL_INCLUDED_FILES"];    if(!project->isEmpty("TRANSLATIONS"))	dist_files << var("TRANSLATIONS");    if(!project->isEmpty("FORMS")) {	QStringList &forms = project->variables()["FORMS"];	for(QStringList::Iterator formit = forms.begin(); formit != forms.end(); ++formit) {	    QString ui_h = fileFixify((*formit) + Option::h_ext.first());	    if(QFile::exists(ui_h) )		dist_files << ui_h;	}    }    t << "dist:" << "\n\t"      << "$(ZIP) " << var("QMAKE_ORIG_TARGET") << ".zip " << "$(SOURCES) $(HEADERS) $(DIST) $(FORMS) "      << dist_files.join(" ") << " " << var("TRANSLATIONS") << " " << var("IMAGES") << endl << endl;    t << "uiclean:"      << varGlue("UICDECLS" ,"\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","")      << varGlue("UICIMPLS" ,"\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","") << endl;    t << "mocclean:"      << varGlue("SRCMOC" ,"\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","")      << varGlue("OBJMOC" ,"\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","") << endl;    t << "clean: uiclean mocclean"      << varGlue("OBJECTS","\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","")      << varGlue("QMAKE_CLEAN","\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","\n")      << varGlue("CLEAN_FILES","\n\t-$(DEL_FILE) ","\n\t-$(DEL_FILE) ","\n");    if ( project->isActiveConfig("activeqt")) {	t << ("\n\t-$(DEL_FILE) " + var("OBJECTS_DIR") + targetfilename + ".idl");	t << ("\n\t-$(DEL_FILE) " + var("OBJECTS_DIR") + targetfilename + ".tlb");    }    if(!project->isEmpty("IMAGES"))	t << varGlue("QMAKE_IMAGE_COLLECTION", "\n\t-$(DEL_FILE) ", "\n\t-$(DEL_FILE) ", "");    t << endl;    // user defined targets    QStringList::Iterator it;    QStringList &qut = project->variables()["QMAKE_EXTRA_WIN_TARGETS"];    for(it = qut.begin(); it != qut.end(); ++it) {	QString targ = var((*it) + ".target"),		 cmd = var((*it) + ".commands"), deps;	if(targ.isEmpty())	    targ = (*it);	QStringList &deplist = project->variables()[(*it) + ".depends"];	for(QStringList::Iterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) {	    QString dep = var((*dep_it) + ".target");	    if(dep.isEmpty())		dep = (*dep_it);	    deps += " " + dep;	}	if(!project->variables()["QMAKE_NOFORCE"].isEmpty() &&	   project->variables()[(*it) + ".CONFIG"].findIndex("phony") != -1)	    deps += QString(" ") + "FORCE";	t << "\n\n" << targ << ":" << deps << "\n\t"	  << cmd;    }    t << endl << endl;    QStringList &quc = project->variables()["QMAKE_EXTRA_WIN_COMPILERS"];    for(it = quc.begin(); it != quc.end(); ++it) {	QString tmp_out = project->variables()[(*it) + ".output"].first();	QString tmp_cmd = project->variables()[(*it) + ".commands"].join(" ");	QString tmp_dep = project->variables()[(*it) + ".depends"].join(" ");	QStringList &vars = project->variables()[(*it) + ".variables"];	if(tmp_out.isEmpty() || tmp_cmd.isEmpty())	    continue;	QStringList &tmp = project->variables()[(*it) + ".input"];	for(QStringList::Iterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) {	    QStringList &inputs = project->variables()[(*it2)];	    for(QStringList::Iterator input = inputs.begin(); input != inputs.end(); ++input) {		QFileInfo fi(Option::fixPathToLocalOS((*input)));		QString in = Option::fixPathToTargetOS((*input), FALSE),		       out = tmp_out, cmd = tmp_cmd, deps;		out.replace("${QMAKE_FILE_BASE}", fi.baseName());		out.replace("${QMAKE_FILE_NAME}", fi.filePath());		cmd.replace("${QMAKE_FILE_BASE}", fi.baseName());		cmd.replace("${QMAKE_FILE_OUT}", out);		cmd.replace("${QMAKE_FILE_NAME}", fi.filePath());		for(QStringList::Iterator it3 = vars.begin(); it3 != vars.end(); ++it3)		    cmd.replace("$(" + (*it3) + ")", "$(QMAKE_COMP_" + (*it3)+")");		if(!tmp_dep.isEmpty()) {		    char buff[256];		    QString dep_cmd = tmp_dep;		    dep_cmd.replace("${QMAKE_FILE_NAME}", fi.filePath());		    if(FILE *proc = QT_POPEN(dep_cmd.latin1(), "r")) {			while(!feof(proc)) {			    int read_in = int(fread(buff, 1, 255, proc));			    if(!read_in)				break;			    int l = 0;			    for(int i = 0; i < read_in; i++) {				if(buff[i] == '\n' || buff[i] == ' ') {				    deps += " " + QCString(buff+l, (i - l) + 1);				    l = i;				}			    }			}			fclose(proc);		    }		}		t << out << ": " << in << deps << "\n\t"		  << cmd << endl << endl;	    }	}    }    t << endl;    if(project->variables()["QMAKE_NOFORCE"].isEmpty())	t << "FORCE:" << endl << endl;    t << "distclean: clean"      << "\n\t-$(DEL_FILE) $(TARGET)"      << endl << endl;    // precompiled header    if(usePCH) {	QString precompRule = QString("-c -Yc -Fp%1 -Fo%2").arg(precompPch).arg(precompObj);	t << precompObj << ": " << precompH << " " << findDependencies(precompH).join(" \\\n\t\t")	  << "\n\t" << ("$(CXX) " + precompRule + " $(CXXFLAGS) $(INCPATH) -TP ") << precompH << endl << endl;    }}QStringNmakeMakefileGenerator::var(const QString &value){    if (usePCH) {    	if ((value == "QMAKE_RUN_CXX_IMP_BATCH"	    || value == "QMAKE_RUN_CXX_IMP"	    || value == "QMAKE_RUN_CXX")) {	    QFileInfo precompHInfo(precompH);	    QString precompRule = QString("-c -FI%1 -Yu%2 -Fp%3")		.arg(precompHInfo.fileName())		.arg(precompHInfo.fileName())		.arg(precompPch);	    QString p = MakefileGenerator::var(value);	    p.replace("-c", precompRule);	    // Cannot use -Gm with -FI & -Yu, as this gives an	    // internal compiler error, on the newer compilers	    p.remove("-Gm");	    return p;	} else if (value == "QMAKE_CXXFLAGS") {	    // Remove internal compiler error option	    return MakefileGenerator::var(value).remove("-Gm");	}    }    // Normal val    return MakefileGenerator::var(value);}voidNmakeMakefileGenerator::init(){    if(init_flag)	return;    init_flag = TRUE;    /* this should probably not be here, but I'm using it to wrap the .t files */    if(project->first("TEMPLATE") == "app")	project->variables()["QMAKE_APP_FLAG"].append("1");    else if(project->first("TEMPLATE") == "lib")	project->variables()["QMAKE_LIB_FLAG"].append("1");    else if(project->first("TEMPLATE") == "subdirs") {	MakefileGenerator::init();	if(project->variables()["MAKEFILE"].isEmpty())	    project->variables()["MAKEFILE"].append("Makefile");	if(project->variables()["QMAKE"].isEmpty())	    project->variables()["QMAKE"].append("qmake");	return;    }    if(project->isEmpty("QMAKE_INSTALL_FILE"))	project->variables()["QMAKE_INSTALL_FILE"].append("$(COPY_FILE)");    if(project->isEmpty("QMAKE_INSTALL_DIR"))	project->variables()["QMAKE_INSTALL_DIR"].append("$(COPY_DIR)");    bool is_qt = (project->first("TARGET") == "qt"QTDLL_POSTFIX || project->first("TARGET") == "qt-mt"QTDLL_POSTFIX);    project->variables()["QMAKE_ORIG_TARGET"] = project->variables()["TARGET"];    QString targetfilename = project->variables()["TARGET"].first();    QStringList &configs = project->variables()["CONFIG"];    if (project->isActiveConfig("qt") && project->isActiveConfig("shared"))	project->variables()["DEFINES"].append("QT_DLL");    if (project->isActiveConfig("qt_dll"))	if(configs.findIndex("qt") == -1) configs.append("qt");    if ( project->isActiveConfig("qtopia") ) {	if(configs.findIndex("qtopialib") == -1)	    configs.append("qtopialib");	if(configs.findIndex("qtopiainc") == -1)	    configs.append("qtopiainc");    }    if ( project->isActiveConfig("qt") ) {	if ( project->isActiveConfig( "plugin" ) ) {	    project->variables()["CONFIG"].append("dll");	    if(project->isActiveConfig("qt"))		project->variables()["DEFINES"].append("QT_PLUGIN");	}	if ( (project->variables()["DEFINES"].findIndex("QT_NODLL") == -1) &&         ((project->variables()["DEFINES"].findIndex("QT_MAKEDLL") != -1 ||           project->variables()["DEFINES"].findIndex("QT_DLL") != -1) ||          (getenv("QT_DLL") && !getenv("QT_NODLL"))) ) {	    project->variables()["QMAKE_QT_DLL"].append("1");	    if ( is_qt && !project->variables()["QMAKE_LIB_FLAG"].isEmpty() )		project->variables()["CONFIG"].append("dll");	}	if ( project->isActiveConfig("thread") )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_THREAD_SUPPORT");	if ( project->isActiveConfig("accessibility" ) )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_ACCESSIBILITY_SUPPORT");	if ( project->isActiveConfig("tablet") )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_TABLET_SUPPORT");    }    if ( project->isActiveConfig("dll") || !project->variables()["QMAKE_APP_FLAG"].isEmpty() ) {	project->variables()["CONFIG"].remove("staticlib");	project->variables()["QMAKE_APP_OR_DLL"].append("1");    } else {	project->variables()["CONFIG"].append("staticlib");    }    if ( project->isActiveConfig("warn_off") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_WARN_OFF"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_WARN_OFF"];    } else if ( project->isActiveConfig("warn_on") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_WARN_ON"];

⌨️ 快捷键说明

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