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

📄 msvc_vcproj.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    t << _snlExtSections;    t << _snlGlobalEnd;}// ------------------------------------------------------------------------------------------------// ------------------------------------------------------------------------------------------------void VcprojGenerator::init(){    if( init_flag )	return;    if(project->first("TEMPLATE") == "vcsubdirs") { //too much work for subdirs	init_flag = TRUE;	return;    }    debug_msg(1, "Generator: MSVC.NET: Initializing variables" );/*    // Once to be nice and clean code...    // Wouldn't life be great?    // Are we building Qt?    bool is_qt =	( project->first("TARGET") == "qt"QTDLL_POSTFIX ||	  project->first("TARGET") == "qt-mt"QTDLL_POSTFIX );    // Are we using Qt?    bool isQtActive = project->isActiveConfig("qt");    if ( isQtActive ) {	project->variables()["CONFIG"] += "moc";	project->variables()["CONFIG"] += "windows";	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR_QT"];	project->variables()["QMAKE_LIBDIR"] += project->variables()["QMAKE_LIBDIR_QT"];	if( projectTarget == SharedLib )	    project->variables()["DEFINES"] += "QT_DLL";	if( project->isActiveConfig("accessibility" ) )	    project->variables()["DEFINES"] += "QT_ACCESSIBILITY_SUPPORT";	if ( project->isActiveConfig("plugin")) {	    project->variables()["DEFINES"] += "QT_PLUGIN";	    project->variables()["CONFIG"] += "dll";	}	if( project->isActiveConfig("thread") ) {	    project->variables()["DEFINES"] += "QT_THREAD_SUPPORT";	    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT_THREAD"];	} else {	    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT"];	}    }    if ( project->isActiveConfig("opengl") ) {	project->variables()["CONFIG"] += "windows"; // <-- Also in 'qt' above	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_OPENGL"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_OPENGL"];    }*/    initOld();	   // Currently calling old DSP code to set variables. CLEAN UP!    // Figure out what we're trying to build    if ( project->first("TEMPLATE") == "vcapp" ) {	projectTarget = Application;    } else if ( project->first("TEMPLATE") == "vclib") {	if ( project->isActiveConfig( "staticlib" ) )	    projectTarget = StaticLib;	else	    projectTarget = SharedLib;    }    initProject(); // Fills the whole project with proper data}void VcprojGenerator::initProject(){    // Initialize XML sub elements    // - Do this first since project elements may need    // - to know of certain configuration options    initConfiguration();    initSourceFiles();    initHeaderFiles();    initMOCFiles();    initUICFiles();    initFormsFiles();    initTranslationFiles();    initLexYaccFiles();    initResourceFiles();    // Own elements -----------------------------    vcProject.Name = project->first("QMAKE_ORIG_TARGET");    vcProject.Version = "7.00";    vcProject.PlatformName = ( vcProject.Configuration.idl.TargetEnvironment == midlTargetWin64 ? "Win64" : "Win32" );    // These are not used by Qt, but may be used by customers    vcProject.SccProjectName = project->first("SCCPROJECTNAME");    vcProject.SccLocalPath = project->first("SCCLOCALPATH");}void VcprojGenerator::initConfiguration(){    // Initialize XML sub elements    // - Do this first since main configuration elements may need    // - to know of certain compiler/linker options    initCompilerTool();    if ( projectTarget == StaticLib )	initLibrarianTool();    else	initLinkerTool();    initIDLTool();    // Own elements -----------------------------    QString temp = project->first("BuildBrowserInformation");    switch ( projectTarget ) {    case SharedLib:        vcProject.Configuration.ConfigurationType = typeDynamicLibrary;	break;    case StaticLib:        vcProject.Configuration.ConfigurationType = typeStaticLibrary;	break;    case Application:    default:        vcProject.Configuration.ConfigurationType = typeApplication;	break;    }    vcProject.Configuration.Name =  ( project->isActiveConfig( "debug" ) ? "Debug|" : "Release|" );    vcProject.Configuration.Name += ( vcProject.Configuration.idl.TargetEnvironment == midlTargetWin64 ? "Win64" : "Win32" );    vcProject.Configuration.ATLMinimizesCRunTimeLibraryUsage = ( project->first("ATLMinimizesCRunTimeLibraryUsage").isEmpty() ? _False : _True );    vcProject.Configuration.BuildBrowserInformation = triState( temp.isEmpty() ? (short)unset : temp.toShort() );    temp = project->first("CharacterSet");    vcProject.Configuration.CharacterSet = charSet( temp.isEmpty() ? (short)charSetNotSet : temp.toShort() );    vcProject.Configuration.DeleteExtensionsOnClean = project->first("DeleteExtensionsOnClean");    vcProject.Configuration.ImportLibrary = vcProject.Configuration.linker.ImportLibrary;    vcProject.Configuration.IntermediateDirectory = project->first("OBJECTS_DIR");//    temp = (projectTarget == StaticLib) ? project->first("DESTDIR"):project->first("DLLDESTDIR");    vcProject.Configuration.OutputDirectory = "."; //( temp.isEmpty() ? QString(".") : temp );    vcProject.Configuration.PrimaryOutput = project->first("PrimaryOutput");    vcProject.Configuration.WholeProgramOptimization = vcProject.Configuration.compiler.WholeProgramOptimization;    temp = project->first("UseOfATL");    if ( !temp.isEmpty() )	vcProject.Configuration.UseOfATL = useOfATL( temp.toShort() );    temp = project->first("UseOfMfc");    if ( !temp.isEmpty() )        vcProject.Configuration.UseOfMfc = useOfMfc( temp.toShort() );    // Configuration does not need parameters from    // these sub XML items;    initCustomBuildTool();    initPreBuildEventTools();    initPostBuildEventTools();    initPreLinkEventTools();}void VcprojGenerator::initCompilerTool(){    QString placement = project->first("OBJECTS_DIR");    if ( placement.isEmpty() )	placement = ".\\";    vcProject.Configuration.compiler.AssemblerListingLocation = placement ;    vcProject.Configuration.compiler.ProgramDataBaseFileName = placement ;    vcProject.Configuration.compiler.ObjectFile = placement ;    vcProject.Configuration.compiler.PrecompiledHeaderFile = placement + project->first("QMAKE_ORIG_TARGET") + ".pch";    if ( project->isActiveConfig("debug") ){	// Debug version	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS"] );	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_DEBUG"] );	if ( project->isActiveConfig("thread") ) {	    if ( (projectTarget == Application) || (projectTarget == StaticLib) )		vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_MT_DBG"] );	    else		vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_MT_DLLDBG"] );	} else {	    vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_ST_DBG"] );	}    } else {	// Release version	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS"] );	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_RELEASE"] );	vcProject.Configuration.compiler.PreprocessorDefinitions += "QT_NO_DEBUG";	if ( project->isActiveConfig("thread") ) {	    if ( (projectTarget == Application) || (projectTarget == StaticLib) )		vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_MT"] );	    else		vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_MT_DLL"] );	} else {	    vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_ST"] );	}    }    // Common for both release and debug    if ( project->isActiveConfig("warn_off") )	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_WARN_OFF"] );    else if ( project->isActiveConfig("warn_on") )	vcProject.Configuration.compiler.parseOptions( project->variables()["QMAKE_CXXFLAGS_WARN_ON"] );    if ( project->isActiveConfig("windows") )	vcProject.Configuration.compiler.PreprocessorDefinitions += project->variables()["MSVCPROJ_WINCONDEF"];    // Can this be set for ALL configs?    // If so, use qmake.conf!    if ( projectTarget == SharedLib )	vcProject.Configuration.compiler.PreprocessorDefinitions += "_WINDOWS";    vcProject.Configuration.compiler.PreprocessorDefinitions += project->variables()["DEFINES"];    vcProject.Configuration.compiler.PreprocessorDefinitions += project->variables()["PRL_EXPORT_DEFINES"];    vcProject.Configuration.compiler.parseOptions( project->variables()["MSVCPROJ_INCPATH"] );}void VcprojGenerator::initLibrarianTool(){    vcProject.Configuration.librarian.OutputFile = project->first( "DESTDIR" );    if( vcProject.Configuration.librarian.OutputFile.isEmpty() )	vcProject.Configuration.librarian.OutputFile = ".\\";    if( !vcProject.Configuration.librarian.OutputFile.endsWith("\\") )    	vcProject.Configuration.librarian.OutputFile += '\\';    vcProject.Configuration.librarian.OutputFile += project->first("MSVCPROJ_TARGET");}void VcprojGenerator::initLinkerTool(){    vcProject.Configuration.linker.parseOptions( project->variables()["MSVCPROJ_LFLAGS"] );    vcProject.Configuration.linker.AdditionalDependencies += project->variables()["MSVCPROJ_LIBS"];    switch ( projectTarget ) {    case Application:	vcProject.Configuration.linker.OutputFile = project->first( "DESTDIR" );	break;    case SharedLib:	vcProject.Configuration.linker.parseOptions( project->variables()["MSVCPROJ_LIBOPTIONS"] );	vcProject.Configuration.linker.OutputFile = project->first( "DLLDESTDIR" );	break;    case StaticLib: //unhandled - added to remove warnings..	break;    }    if( vcProject.Configuration.linker.OutputFile.isEmpty() )	vcProject.Configuration.linker.OutputFile = ".\\";    if( !vcProject.Configuration.linker.OutputFile.endsWith("\\") )    	vcProject.Configuration.linker.OutputFile += '\\';    vcProject.Configuration.linker.OutputFile += project->first("MSVCPROJ_TARGET");    vcProject.Configuration.linker.ProgramDatabaseFile = project->first("OBJECTS_DIR") + project->first("QMAKE_ORIG_TARGET") + ".pdb";    if ( project->isActiveConfig("debug") ){	vcProject.Configuration.linker.parseOptions( project->variables()["QMAKE_LFLAGS_DEBUG"] );    } else {        vcProject.Configuration.linker.parseOptions( project->variables()["QMAKE_LFLAGS_RELEASE"] );    }    if ( project->isActiveConfig("dll") ){	vcProject.Configuration.linker.parseOptions( project->variables()["QMAKE_LFLAGS_QT_DLL"] );    }    if ( project->isActiveConfig("console") ){	vcProject.Configuration.linker.parseOptions( project->variables()["QMAKE_LFLAGS_CONSOLE"] );    } else {	vcProject.Configuration.linker.parseOptions( project->variables()["QMAKE_LFLAGS_WINDOWS"] );    }}void VcprojGenerator::initIDLTool(){}void VcprojGenerator::initCustomBuildTool(){}void VcprojGenerator::initPreBuildEventTools(){    QString collectionName = project->first("QMAKE_IMAGE_COLLECTION");    if( !collectionName.isEmpty() ) {        QStringList& list = project->variables()["IMAGES"];	vcProject.Configuration.preBuild.Description = "Generate imagecollection";	//vcProject.Configuration.preBuild.AdditionalDependencies += list;	vcProject.Configuration.preBuild.CommandLine = project->first("QMAKE_UIC") + " -embed " + project->first("QMAKE_ORIG_TARGET") + " " + list.join(" ") + " -o " + collectionName;	//vcProject.Configuration.preBuild.Outputs = collectionName;    }}void VcprojGenerator::initPostBuildEventTools(){    if( project->isActiveConfig( "activeqt" ) ) {	QString name = project->first( "QMAKE_ORIG_TARGET" );	QString nameext = project->first( "TARGET" );	QString objdir = project->first( "OBJECTS_DIR" );	QString idc = project->first( "QMAKE_IDC" );	vcProject.Configuration.postBuild.Description = "Finalizing ActiveQt server...";	if( project->isActiveConfig( "dll" ) ) { // In process

⌨️ 快捷键说明

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