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

📄 mingw_make.cpp

📁 qt专门用于嵌入式的图形开发GUI
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_RELEASE"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_RELEASE"];    }    if ( !project->variables()["QMAKE_INCDIR"].isEmpty())	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR"];    if ( project->isActiveConfig("qt") || project->isActiveConfig("opengl") )	project->variables()["CONFIG"].append("windows");    if ( project->isActiveConfig("qt") ) {	project->variables()["CONFIG"].append("moc");	project->variables()["INCLUDEPATH"] +=	project->variables()["QMAKE_INCDIR_QT"];	project->variables()["QMAKE_LIBDIR"] += project->variables()["QMAKE_LIBDIR_QT"];	if ( !project->isActiveConfig("debug") )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_NO_DEBUG");	if ( is_qt && !project->variables()["QMAKE_LIB_FLAG"].isEmpty() ) {	    if ( !project->variables()["QMAKE_QT_DLL"].isEmpty()) {		project->variables()["DEFINES"].append("QT_MAKEDLL");		project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_QT_DLL"];	    }	} else {	    if(project->isActiveConfig("thread"))		project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT_THREAD"];	    else		project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT"];	    if ( !project->variables()["QMAKE_QT_DLL"].isEmpty() ) {		int hver = findHighestVersion(project->first("QMAKE_LIBDIR_QT"), "qt");		if ( hver == -1 )		    hver = findHighestVersion(project->first("QMAKE_LIBDIR_QT"), "qt-mt");		if(hver != -1) {		    QString ver;		    ver.sprintf("-lqt%s" QTDLL_POSTFIX "%d", (project->isActiveConfig("thread") ? "-mt" : ""), hver);		    QStringList &libs = project->variables()["QMAKE_LIBS"];// @@@HGTODO maybe we must change the replace regexp if we understand what's going on		    for(QStringList::Iterator libit = libs.begin(); libit != libs.end(); ++libit)			(*libit).replace(QRegExp("-lqt(-mt)?"), ver);		}	    }	    if ( project->isActiveConfig( "activeqt" ) ) {		project->variables().remove("QMAKE_LIBS_QT_ENTRY");		project->variables()["QMAKE_LIBS_QT_ENTRY"] = "-lqaxserver";		if ( project->isActiveConfig( "dll" ) ) {		   project->variables()["QMAKE_LIBS"]  += project->variables()["QMAKE_LIBS_QT_ENTRY"];		}	    }	    if ( !project->isActiveConfig("dll") && !project->isActiveConfig("plugin") ) {		project->variables()["QMAKE_LIBS"] +=project->variables()["QMAKE_LIBS_QT_ENTRY"];	    }            // QMAKE_LIBS_QT_ENTRY should be first on the link line as it needs qt            project->variables()["QMAKE_LIBS"].remove(project->variables()["QMAKE_LIBS_QT_ENTRY"].first());	    project->variables()["QMAKE_LIBS"].prepend(project->variables()["QMAKE_LIBS_QT_ENTRY"].first());	}    }    if ( project->isActiveConfig("opengl") ) {	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_OPENGL"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_OPENGL"];    }    if ( project->isActiveConfig("dll") ) {	project->variables()["QMAKE_CFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_CFLAGS_CONSOLE_DLL"];	project->variables()["QMAKE_CXXFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_CXXFLAGS_CONSOLE_DLL"];	project->variables()["QMAKE_LFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_LFLAGS_CONSOLE_DLL"];	project->variables()["QMAKE_LFLAGS_WINDOWS_ANY"] = project->variables()["QMAKE_LFLAGS_WINDOWS_DLL"];	if ( !project->variables()["QMAKE_LIB_FLAG"].isEmpty()) {	    project->variables()["TARGET_EXT"].append(		QStringList::split('.',project->first("VERSION")).join("") + ".dll");	} else {	    project->variables()["TARGET_EXT"].append(".dll");	}    } else {	project->variables()["QMAKE_CFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_CFLAGS_CONSOLE"];	project->variables()["QMAKE_CXXFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_CXXFLAGS_CONSOLE"];	project->variables()["QMAKE_LFLAGS_CONSOLE_ANY"] = project->variables()["QMAKE_LFLAGS_CONSOLE"];	project->variables()["QMAKE_LFLAGS_WINDOWS_ANY"] = project->variables()["QMAKE_LFLAGS_WINDOWS"];	if ( !project->variables()["QMAKE_APP_FLAG"].isEmpty()) {	    project->variables()["TARGET_EXT"].append(".exe");	} else {	    project->variables()["TARGET_EXT"].append(".a");	    project->variables()["QMAKE_LFLAGS"].append("-static");	    if(project->variables()["TARGET"].first().left(3) != "lib")		project->variables()["TARGET"].first().prepend("lib");	}    }    if ( project->isActiveConfig("windows") ) {	if ( project->isActiveConfig("console") ) {	    project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_CONSOLE_ANY"];	    project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_CONSOLE_ANY"];	    project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_CONSOLE_ANY"];	    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_CONSOLE"];	} else {	    project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_WINDOWS_ANY"];	}	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_WINDOWS"];    } else {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_CONSOLE_ANY"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_CONSOLE_ANY"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_CONSOLE_ANY"];	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_CONSOLE"];    }    if ( project->isActiveConfig("exceptions") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_EXCEPTIONS_ON"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_EXCEPTIONS_ON"];    } else {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_EXCEPTIONS_OFF"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_EXCEPTIONS_OFF"];    }    if ( project->isActiveConfig("rtti") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_RTTI_ON"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_RTTI_ON"];    } else {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_RTTI_OFF"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_RTTI_OFF"];    }    if ( project->isActiveConfig("moc") )	setMocAware(TRUE);    // add -L libs to libdir    QStringList &libs = project->variables()["QMAKE_LIBS"];    for ( QStringList::Iterator libit = libs.begin(); libit != libs.end();  ) {	if ( (*libit).startsWith( "-L" ) ) {	    project->variables()["QMAKE_LIBDIR"] += (*libit).mid(2);	    libit = libs.remove( libit );	} else {	    ++libit;	}    }    project->variables()["QMAKE_FILETAGS"] += QStringList::split(' ',	"HEADERS SOURCES DEF_FILE RC_FILE TARGET QMAKE_LIBS DESTDIR DLLDESTDIR INCLUDEPATH");    QStringList &l = project->variables()["QMAKE_FILETAGS"];    QStringList::Iterator it;    for(it = l.begin(); it != l.end(); ++it) {	QStringList &gdmf = project->variables()[(*it)];	for(QStringList::Iterator inner = gdmf.begin(); inner != gdmf.end(); ++inner)	    (*inner) = Option::fixPathToTargetOS((*inner), FALSE);    }    if ( project->isActiveConfig("dll") ) {		QString destDir = "";		if (!project->first("DESTDIR").isEmpty())			destDir = project->first("DESTDIR") + Option::dir_sep;		project->variables()["QMAKE_LFLAGS"].append(QString("-Wl,--out-implib,") +					  destDir + "lib" + project->first("TARGET") + ".a");    }    if ( !project->variables()["DEF_FILE"].isEmpty() )	project->variables()["QMAKE_LFLAGS"].append(QString("-Wl,") + project->first("DEF_FILE"));//    if(!project->isActiveConfig("incremental"))//	project->variables()["QMAKE_LFLAGS"].append(QString("/incremental:no"));#if 0    if ( !project->variables()["VERSION"].isEmpty() ) {	QString version = project->variables()["VERSION"][0];	int firstDot = version.find( "." );	QString major = version.left( firstDot );	QString minor = version.right( version.length() - firstDot - 1 );	minor.replace( ".", "" );	project->variables()["QMAKE_LFLAGS"].append( "/VERSION:" + major + "." + minor );    }#endif    if ( !project->variables()["RC_FILE"].isEmpty()) {	if ( !project->variables()["RES_FILE"].isEmpty()) {	    fprintf(stderr, "Both .rc and .res file specified.\n");	    fprintf(stderr, "Please specify one of them, not both.");	    exit(666);	}	project->variables()["RES_FILE"] = project->variables()["RC_FILE"];	project->variables()["RES_FILE"].first().replace(".rc",".o");	project->variables()["POST_TARGETDEPS"] += project->variables()["RES_FILE"];	project->variables()["CLEAN_FILES"] += project->variables()["RES_FILE"];    }    if ( !project->variables()["RES_FILE"].isEmpty())	project->variables()["QMAKE_LIBS"] += project->variables()["RES_FILE"];    MakefileGenerator::init();    if ( !project->variables()["VERSION"].isEmpty()) {	QStringList l = QStringList::split('.', project->first("VERSION"));	project->variables()["VER_MAJ"].append(l[0]);	project->variables()["VER_MIN"].append(l[1]);    }    if(project->isActiveConfig("dll")) {	project->variables()["QMAKE_CLEAN"].append(project->first("DESTDIR") +"lib" + project->first("TARGET") + ".a");    }    QStringList &quc = project->variables()["QMAKE_EXTRA_WIN_COMPILERS"];    for(it = quc.begin(); it != quc.end(); ++it) {	QString tmp_out = project->variables()[(*it) + ".output"].first();	if(tmp_out.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;		out.replace("${QMAKE_FILE_BASE}", fi.baseName());		out.replace("${QMAKE_FILE_NAME}", fi.filePath());		if(project->variables()[(*it) + ".CONFIG"].findIndex("no_link") == -1)		    project->variables()["OBJCOMP"] += out;	    }	}    }}voidMingwMakefileGenerator::writeSubDirs(QTextStream &t){    QString qs ;    QTextStream ts (&qs, IO_WriteOnly) ;    Win32MakefileGenerator::writeSubDirs( ts ) ;    QRegExp rx("(\\n\\tcd [^\\n\\t]+)(\\n\\t.+)\\n\\t@cd ..") ;    rx.setMinimal(TRUE);    int pos = 0 ;    while ( -1 != (pos = rx.search( qs, pos)))    {	QString qsMatch = rx.cap(2);	qsMatch.replace("\n\t"," && \\\n\t");	qs.replace(pos+rx.cap(1).length(), rx.cap(2).length(), qsMatch );	pos += (rx.cap(1).length()+qsMatch.length());    }    t << qs ;}

⌨️ 快捷键说明

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