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

📄 msvc_dsp.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	    project->variables()["TARGET_EXT"].append(".exe");	else	    project->variables()["TARGET_EXT"].append(".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"];    }    project->variables()["MSVCDSP_VER"] = "6.00";    project->variables()["MSVCDSP_DEBUG_OPT"] = "/GZ /ZI";    if(!project->isActiveConfig("incremental")) {	project->variables()["QMAKE_LFLAGS"].append(QString("/incremental:no"));        if ( is_qt )	    project->variables()["MSVCDSP_DEBUG_OPT"] = "/GZ /Zi";    }    QString msvcdsp_project;    if ( project->variables()["TARGET"].count() )	msvcdsp_project = project->variables()["TARGET"].first();    QString targetfilename = project->variables()["TARGET"].first();    project->variables()["TARGET"].first() += project->first("TARGET_EXT");    if ( project->isActiveConfig("moc") )	setMocAware(TRUE);    project->variables()["QMAKE_LIBS"] += project->variables()["LIBS"];    project->variables()["QMAKE_FILETAGS"] += QStringList::split(' ',								 "HEADERS SOURCES DEF_FILE RC_FILE TARGET QMAKE_LIBS DESTDIR DLLDESTDIR INCLUDEPATH");    QStringList &l = project->variables()["QMAKE_FILETAGS"];    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);    }    MakefileGenerator::init();    if ( msvcdsp_project.isEmpty() )	msvcdsp_project = Option::output.name();    msvcdsp_project = msvcdsp_project.right( msvcdsp_project.length() - msvcdsp_project.findRev( "\\" ) - 1 );    msvcdsp_project = msvcdsp_project.left( msvcdsp_project.findRev( "." ) );    msvcdsp_project.replace("-", "");    project->variables()["MSVCDSP_PROJECT"].append(msvcdsp_project);    QStringList &proj = project->variables()["MSVCDSP_PROJECT"];    for(it = proj.begin(); it != proj.end(); ++it)	(*it).replace(QRegExp("\\.[a-zA-Z0-9_]*$"), "");    if ( !project->variables()["QMAKE_APP_FLAG"].isEmpty() ) {	project->variables()["MSVCDSP_TEMPLATE"].append("win32app" + project->first( "DSP_EXTENSION" ) );	if ( project->isActiveConfig("console") ) {	    project->variables()["MSVCDSP_CONSOLE"].append("Console");	    project->variables()["MSVCDSP_WINCONDEF"].append("_CONSOLE");	    project->variables()["MSVCDSP_DSPTYPE"].append("0x0103");	} else {	    project->variables()["MSVCDSP_CONSOLE"].clear();	    project->variables()["MSVCDSP_WINCONDEF"].append("_WINDOWS");	    project->variables()["MSVCDSP_DSPTYPE"].append("0x0101");	}    } else {        if ( project->isActiveConfig("dll") ) {            project->variables()["MSVCDSP_TEMPLATE"].append("win32dll" + project->first( "DSP_EXTENSION" ) );        } else {            project->variables()["MSVCDSP_TEMPLATE"].append("win32lib" + project->first( "DSP_EXTENSION" ) );        }    }    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_WINDOWS"];     processPrlFiles();     // Update -lname to name.lib,    QStringList &libs2 = project->variables()["QMAKE_LIBS"];    for ( QStringList::Iterator libit2 = libs2.begin(); libit2 != libs2.end(); ++libit2 ) {	if (  (*libit2).startsWith( "-l" ) ) {	    (*libit2) = (*libit2).mid( 2 ) + ".lib";	} else if ( (*libit2).startsWith( "-L" ) ) {	    project->variables()["QMAKE_LIBDIR"] += (*libit2).mid(2);	    libit2 = libs2.remove( libit2 );	}    }        project->variables()["MSVCDSP_LFLAGS" ] += project->variables()["QMAKE_LFLAGS"];    if ( !project->variables()["QMAKE_LIBDIR"].isEmpty() )	project->variables()["MSVCDSP_LFLAGS" ].append(varGlue("QMAKE_LIBDIR","/LIBPATH:\"","\" /LIBPATH:\"","\""));    project->variables()["MSVCDSP_CXXFLAGS" ] += project->variables()["QMAKE_CXXFLAGS"];    project->variables()["MSVCDSP_DEFINES"].append(varGlue("DEFINES","/D ","" " /D ",""));    project->variables()["MSVCDSP_DEFINES"].append(varGlue("PRL_EXPORT_DEFINES","/D ","" " /D ",""));       QStringList &libs = project->variables()["QMAKE_LIBS"];    for(QStringList::Iterator libit = libs.begin(); libit != libs.end(); ++libit) {	QString lib = (*libit);	lib.replace(QRegExp("\""), "");	project->variables()["MSVCDSP_LIBS"].append(" \"" + lib + "\"");    }    QStringList &incs = project->variables()["INCLUDEPATH"];    for(QStringList::Iterator incit = incs.begin(); incit != incs.end(); ++incit) {	QString inc = (*incit);	inc.replace("\"", "");	project->variables()["MSVCDSP_INCPATH"].append("/I \"" + inc + "\"");    }    project->variables()["MSVCDSP_INCPATH"].append("/I \"" + specdir() + "\"");    if ( project->isActiveConfig("qt") ) {	project->variables()["MSVCDSP_RELDEFS"].append("/D \"QT_NO_DEBUG\"");    } else {	project->variables()["MSVCDSP_RELDEFS"].clear();    }    QString dest;    QString postLinkStep;    QString copyDllStep;    QString activeQtStepPreCopyDll;    QString activeQtStepPostCopyDll;    QString activeQtStepPreCopyDllDebug;    QString activeQtStepPostCopyDllDebug;    QString activeQtStepPreCopyDllRelease;    QString activeQtStepPostCopyDllRelease;    if ( !project->variables()["QMAKE_POST_LINK"].isEmpty() )	postLinkStep += var("QMAKE_POST_LINK");    if ( !project->variables()["DESTDIR"].isEmpty() ) {	project->variables()["TARGET"].first().prepend(project->first("DESTDIR"));	Option::fixPathToTargetOS(project->first("TARGET"));	dest = project->first("TARGET");        if ( project->first("TARGET").startsWith("$(QTDIR)") )	    dest.replace( "$(QTDIR)", getenv("QTDIR") );	project->variables()["MSVCDSP_TARGET"].append(	    QString("/out:\"") + dest + "\"");	if ( project->isActiveConfig("dll") ) {	    QString imp = dest;	    imp.replace(".dll", ".lib");	    project->variables()["MSVCDSP_TARGET"].append(QString(" /implib:\"") + imp + "\"");	}    }    if ( project->isActiveConfig("dll") && !project->variables()["DLLDESTDIR"].isEmpty() ) {	QStringList dlldirs = project->variables()["DLLDESTDIR"];	if ( dlldirs.count() )	    copyDllStep += "\t";	for ( QStringList::Iterator dlldir = dlldirs.begin(); dlldir != dlldirs.end(); ++dlldir ) {	    copyDllStep += "copy \"$(TargetPath)\" \"" + *dlldir + "\"\t";	}    }    if ( project->isActiveConfig("activeqt") ) {	QString idl = project->variables()["QMAKE_IDL"].first();	QString idc = project->variables()["QMAKE_IDC"].first();	QString version = project->variables()["VERSION"].first();	if ( version.isEmpty() )	    version = "1.0";	project->variables()["MSVCDSP_IDLSOURCES"].append( "tmp\\" + targetfilename + ".idl" );	project->variables()["MSVCDSP_IDLSOURCES"].append( "tmp\\" + targetfilename + ".tlb" );	project->variables()["MSVCDSP_IDLSOURCES"].append( "tmp\\" + targetfilename + ".midl" );	if ( project->isActiveConfig( "dll" ) ) {	    activeQtStepPreCopyDll += 			     "\t" + idc + " %1 -idl tmp\\" + targetfilename + ".idl -version " + version +			     "\t" + idl + " tmp\\" + targetfilename + ".idl /nologo /o tmp\\" + targetfilename + ".midl /tlb tmp\\" + targetfilename + ".tlb /iid tmp\\dump.midl /dlldata tmp\\dump.midl /cstub tmp\\dump.midl /header tmp\\dump.midl /proxy tmp\\dump.midl /sstub tmp\\dump.midl"			     "\t" + idc + " %2 /tlb tmp\\" + targetfilename + ".tlb";	    activeQtStepPostCopyDll +=			     "\t" + idc + " %1 /regserver\n";	    QString executable = project->variables()["MSVCDSP_TARGETDIRREL"].first() + "\\" + targetfilename + ".dll";	    activeQtStepPreCopyDllRelease = activeQtStepPreCopyDll.arg(executable).arg(executable);	    activeQtStepPostCopyDllRelease = activeQtStepPostCopyDll.arg(executable);	    executable = project->variables()["MSVCDSP_TARGETDIRDEB"].first() + "\\" + targetfilename + ".dll";	    activeQtStepPreCopyDllDebug = activeQtStepPreCopyDll.arg(executable).arg(executable);	    activeQtStepPostCopyDllDebug = activeQtStepPostCopyDll.arg(executable);	} else {	    activeQtStepPreCopyDll += 			     "\t%1 -dumpidl tmp\\" + targetfilename + ".idl -version " + version +			     "\t" + idl + " tmp\\" + targetfilename + ".idl /nologo /o tmp\\" + targetfilename + ".midl /tlb tmp\\" + targetfilename + ".tlb /iid tmp\\dump.midl /dlldata tmp\\dump.midl /cstub tmp\\dump.midl /header tmp\\dump.midl /proxy tmp\\dump.midl /sstub tmp\\dump.midl"			     "\t" + idc + " %2 /tlb tmp\\" + targetfilename + ".tlb";	    activeQtStepPostCopyDll +=			     "\t%1 -regserver\n";	    QString executable = project->variables()["MSVCDSP_TARGETDIRREL"].first() + "\\" + targetfilename + ".exe";	    activeQtStepPreCopyDllRelease = activeQtStepPreCopyDll.arg(executable).arg(executable);	    activeQtStepPostCopyDllRelease = activeQtStepPostCopyDll.arg(executable);	    executable = project->variables()["MSVCDSP_TARGETDIRDEB"].first() + "\\" + targetfilename + ".exe";	    activeQtStepPreCopyDllDebug = activeQtStepPreCopyDll.arg(executable).arg(executable);	    activeQtStepPostCopyDllDebug = activeQtStepPostCopyDll.arg(executable);	}    }        if ( !postLinkStep.isEmpty() || !copyDllStep.isEmpty() || !activeQtStepPreCopyDllDebug.isEmpty() || !activeQtStepPreCopyDllRelease.isEmpty() ) {	project->variables()["MSVCDSP_POST_LINK_DBG"].append(	    "# Begin Special Build Tool\n"	    "SOURCE=$(InputPath)\n"	    "PostBuild_Desc=Post Build Step\n"	    "PostBuild_Cmds=" + postLinkStep + activeQtStepPreCopyDllDebug + copyDllStep + activeQtStepPostCopyDllDebug + "\n"	    "# End Special Build Tool\n" );	project->variables()["MSVCDSP_POST_LINK_REL"].append(	    "# Begin Special Build Tool\n"	    "SOURCE=$(InputPath)\n"	    "PostBuild_Desc=Post Build Step\n"	    "PostBuild_Cmds=" + postLinkStep + activeQtStepPreCopyDllRelease + copyDllStep + activeQtStepPostCopyDllRelease + "\n"	    "# End Special Build Tool\n" );    }    if ( !project->variables()["SOURCES"].isEmpty() || !project->variables()["RC_FILE"].isEmpty() ) {	project->variables()["SOURCES"] += project->variables()["RC_FILE"];    }    QStringList &list = project->variables()["FORMS"];    for( it = list.begin(); it != list.end(); ++it ) {	if ( QFile::exists( *it + ".h" ) )	    project->variables()["SOURCES"].append( *it + ".h" );    }    project->variables()["QMAKE_INTERNAL_PRL_LIBS"] << "MSVCDSP_LIBS"; }QStringDspMakefileGenerator::findTemplate(const QString &file){    QString ret;    if(!QFile::exists((ret = file)) &&       !QFile::exists((ret = QString(Option::mkfile::qmakespec + "/" + file))) &&       !QFile::exists((ret = QString(getenv("QTDIR")) + "/mkspecs/win32-msvc/" + file)) &&       !QFile::exists((ret = (QString(getenv("HOME")) + "/.tmake/" + file))))	return "";    return ret;}voidDspMakefileGenerator::processPrlVariable(const QString &var, const QStringList &l){    if(var == "QMAKE_PRL_DEFINES") {	QStringList &out = project->variables()["MSVCDSP_DEFINES"];	for(QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {	    if(out.findIndex((*it)) == -1)		out.append((" /D \"" + *it + "\""));	}    } else {	MakefileGenerator::processPrlVariable(var, l);    }}voidDspMakefileGenerator::beginGroupForFile(QString file, QTextStream &t,					const QString& filter){    if(project->isActiveConfig("flat"))	return;    fileFixify(file, QDir::currentDirPath(), QDir::currentDirPath(), TRUE);    file = file.section(Option::dir_sep, 0, -2);    if(file.right(Option::dir_sep.length()) != Option::dir_sep)	file += Option::dir_sep;    if(file == currentGroup)	return;    if(file.isEmpty() || !QDir::isRelativePath(file)) {	endGroups(t);	return;    }        QString tempFile = file;    if(tempFile.startsWith(currentGroup))	tempFile = tempFile.mid(currentGroup.length());    int dirSep = currentGroup.findRev( Option::dir_sep );    while( !tempFile.startsWith( currentGroup ) && dirSep != -1 ) {	currentGroup.truncate( dirSep );	dirSep = currentGroup.findRev( Option::dir_sep );	if ( !tempFile.startsWith( currentGroup ) && dirSep != -1 )	    t << "\n# End Group\n";    }    if ( !file.startsWith( currentGroup ) ) {	t << "\n# End Group\n";	currentGroup = "";    }    QStringList dirs = QStringList::split(Option::dir_sep, file.right( file.length() - currentGroup.length() ) );    for(QStringList::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) {	t << "# Begin Group \"" << (*dir_it) << "\"\n"	    << "# Prop Default_Filter \"" << filter << "\"\n";    }    currentGroup = file;}voidDspMakefileGenerator::endGroups(QTextStream &t){    if(project->isActiveConfig("flat"))	return;    else if(currentGroup.isEmpty())	return;    QStringList dirs = QStringList::split(Option::dir_sep, currentGroup);    for(QStringList::Iterator dir_it = dirs.end(); dir_it != dirs.begin(); --dir_it) {	t << "\n# End Group\n";    }    currentGroup = "";}boolDspMakefileGenerator::openOutput(QFile &file) const{    QString outdir;    if(!file.name().isEmpty()) {	if(QDir::isRelativePath(file.name()))	    file.setName(Option::output_dir + file.name()); //pwd when qmake was run	QFileInfo fi(file);	if(fi.isDir())	    outdir = file.name() + QDir::separator();    }    if(!outdir.isEmpty() || file.name().isEmpty())	file.setName(outdir + project->first("TARGET") + project->first("DSP_EXTENSION"));    if(QDir::isRelativePath(file.name())) {	QString ofile;	ofile = file.name();	int slashfind = ofile.findRev('\\');	if (slashfind == -1) {	    ofile = ofile.replace(QRegExp("-"), "_");	} else {	    int hypenfind = ofile.find('-', slashfind);	    while (hypenfind != -1 && slashfind < hypenfind) {		ofile = ofile.replace(hypenfind, 1, "_");		hypenfind = ofile.find('-', hypenfind + 1);	    }	}	file.setName(Option::fixPathToLocalOS(QDir::currentDirPath() + Option::dir_sep + ofile));    }    return Win32MakefileGenerator::openOutput(file);}

⌨️ 快捷键说明

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