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

📄 msvc_objectmodel.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                    TurnOffAssemblyGeneration = _True;                } else if(*(option+5) == 'p') {                    CompileAsManaged = managedAssemblyPure;                } else if(*(option+5) == 's') {                    CompileAsManaged = managedAssemblySafe;                } else if(*(option+5) == 'o') {                    CompileAsManaged = managedAssemblyOldSyntax;                } else if(*(option+5) == 'i') {                    CompileAsManaged = managedAssembly;                    warn_msg(WarnLogic, "initialAppDomain enum value unknown, using /crl default");                } else {                    CompileAsManaged = managedAssembly;                }            }        } else {            found = false; break;        }        break;    case 'd':        if(second != 'r') {            found = false; break;        }        CompileAsManaged = managedAssembly;        break;    case 'f':        if(second == 'p' && third == ':') {            // Go to the end of the option            const char *c = option + 4;            while (*c != '\0' && *c != ' ' && *c != '-')                ++c;            switch (fourth) {            case 'e':                FloatingPointExceptions = ((*c) == '-' ? _False : _True);                break;            case 'f':                FloatingPointModel = floatingPointFast;                break;            case 'p':                FloatingPointModel = floatingPointPrecise;                break;            case 's':                FloatingPointModel = floatingPointStrict;                break;            default:                found = false;                break;            }        }        break;    case 'n':        if(second == 'o' && third == 'B' && fourth == 'o') {            AdditionalOptions += "/noBool";            break;        }        if(second == 'o' && third == 'l' && fourth == 'o') {            SuppressStartupBanner = _True;            break;        }        found = false; break;    case 's':        if(second == 'h' && third == 'o' && fourth == 'w') {            ShowIncludes = _True;            break;        }        found = false; break;    case 'u':        UndefineAllPreprocessorDefinitions = _True;        break;    case 'v':        if(second == 'd' || second == 'm') {            AdditionalOptions += option;            break;        }        found = false; break;    case 'w':        switch (second) {        case '\0':            WarningLevel = warningLevel_0;            break;        case 'd':            DisableSpecificWarnings += option+3;            break;        default:            AdditionalOptions += option;        }        break;    default:        AdditionalOptions += option;        break;    }    if(!found) {        warn_msg(WarnLogic, "Could not parse Compiler option: %s, added as AdditionalOption", option);        AdditionalOptions += option;    }    return true;}// VCLinkerTool -----------------------------------------------------VCLinkerTool::VCLinkerTool()    :        EnableCOMDATFolding(optFoldingDefault),        GenerateDebugInformation(unset),        GenerateMapFile(unset),        HeapCommitSize(-1),        HeapReserveSize(-1),        IgnoreAllDefaultLibraries(unset),        IgnoreEmbeddedIDL(unset),        IgnoreImportLibrary(_True),        LargeAddressAware(addrAwareDefault),        LinkDLL(unset),        LinkIncremental(linkIncrementalDefault),        LinkTimeCodeGeneration(unset),        MapExports(unset),        MapLines(unset),        OptimizeForWindows98(optWin98Default),        OptimizeReferences(optReferencesDefault),        RegisterOutput(unset),        ResourceOnlyDLL(unset),        SetChecksum(unset),        ShowProgress(linkProgressNotSet),        StackCommitSize(-1),        StackReserveSize(-1),        SubSystem(subSystemNotSet),        SupportUnloadOfDelayLoadedDLL(unset),        SuppressStartupBanner(unset),        SwapRunFromCD(unset),        SwapRunFromNet(unset),        TargetMachine(machineNotSet),        TerminalServerAware(termSvrAwareDefault),        TurnOffAssemblyGeneration(unset),        TypeLibraryResourceID(0){}XmlOutput &operator<<(XmlOutput &xml, const VCLinkerTool &tool){    return xml        << tag(_Tool)            << attrS(_Name, _VCLinkerTool)            << attrX(_AdditionalDependencies, tool.AdditionalDependencies, " ")            << attrX(_AdditionalLibraryDirectories, tool.AdditionalLibraryDirectories)            << attrX(_AdditionalOptions, tool.AdditionalOptions, " ")            << attrX(_AddModuleNamesToAssembly, tool.AddModuleNamesToAssembly)            << attrS(_BaseAddress, tool.BaseAddress)            << attrX(_DelayLoadDLLs, tool.DelayLoadDLLs)            << attrE(_EnableCOMDATFolding, tool.EnableCOMDATFolding, /*ifNot*/ optFoldingDefault)            << attrS(_EntryPointSymbol, tool.EntryPointSymbol)            << attrX(_ForceSymbolReferences, tool.ForceSymbolReferences)            << attrS(_FunctionOrder, tool.FunctionOrder)            << attrT(_GenerateDebugInformation, tool.GenerateDebugInformation)            << attrT(_GenerateMapFile, tool.GenerateMapFile)            << attrL(_HeapCommitSize, tool.HeapCommitSize, /*ifNot*/ -1)            << attrL(_HeapReserveSize, tool.HeapReserveSize, /*ifNot*/ -1)            << attrT(_IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries)            << attrX(_IgnoreDefaultLibraryNames, tool.IgnoreDefaultLibraryNames)            << attrT(_IgnoreEmbeddedIDL, tool.IgnoreEmbeddedIDL)            << attrT(_IgnoreImportLibrary, tool.IgnoreImportLibrary)            << attrS(_ImportLibrary, tool.ImportLibrary)            << attrE(_LargeAddressAware, tool.LargeAddressAware, /*ifNot*/ addrAwareDefault)            << attrT(_LinkDLL, tool.LinkDLL)            << attrE(_LinkIncremental, tool.LinkIncremental, /*ifNot*/ linkIncrementalDefault)            << attrT(_LinkTimeCodeGeneration, tool.LinkTimeCodeGeneration)            << attrS(_LinkToManagedResourceFile, tool.LinkToManagedResourceFile)            << attrT(_MapExports, tool.MapExports)            << attrS(_MapFileName, tool.MapFileName)            << attrT(_MapLines, tool.MapLines)            << attrS(_MergedIDLBaseFileName, tool.MergedIDLBaseFileName)            << attrS(_MergeSections, tool.MergeSections)            << attrS(_MidlCommandFile, tool.MidlCommandFile)            << attrS(_ModuleDefinitionFile, tool.ModuleDefinitionFile)            << attrE(_OptimizeForWindows98, tool.OptimizeForWindows98, /*ifNot*/ optWin98Default)            << attrE(_OptimizeReferences, tool.OptimizeReferences, /*ifNot*/ optReferencesDefault)            << attrS(_OutputFile, tool.OutputFile)            << attr(_ProgramDatabaseFile, tool.ProgramDatabaseFile)            << attrT(_RegisterOutput, tool.RegisterOutput)            << attrT(_ResourceOnlyDLL, tool.ResourceOnlyDLL)            << attrT(_SetChecksum, tool.SetChecksum)            << attrE(_ShowProgress, tool.ShowProgress, /*ifNot*/ linkProgressNotSet)            << attrL(_StackCommitSize, tool.StackCommitSize, /*ifNot*/ -1)            << attrL(_StackReserveSize, tool.StackReserveSize, /*ifNot*/ -1)            << attrS(_StripPrivateSymbols, tool.StripPrivateSymbols)            << attrE(_SubSystem, tool.SubSystem)            << attrT(_SupportUnloadOfDelayLoadedDLL, tool.SupportUnloadOfDelayLoadedDLL)            << attrT(_SuppressStartupBanner, tool.SuppressStartupBanner)            << attrT(_SwapRunFromCD, tool.SwapRunFromCD)            << attrT(_SwapRunFromNet, tool.SwapRunFromNet)            << attrE(_TargetMachine, tool.TargetMachine, /*ifNot*/ machineNotSet)            << attrE(_TerminalServerAware, tool.TerminalServerAware, /*ifNot*/ termSvrAwareDefault)            << attrT(_TurnOffAssemblyGeneration, tool.TurnOffAssemblyGeneration)            << attrS(_TypeLibraryFile, tool.TypeLibraryFile)            << attrL(_TypeLibraryResourceID, tool.TypeLibraryResourceID, /*ifNot*/ rcUseDefault)            << attrS(_Version, tool.Version)        << closetag(_Tool);}// Hashing routine to do fast option lookups ----// Slightly rewritten to stop on ':' ',' and '\0'// Original routine in qtranslator.cpp ----------static uint elfHash(const char* name){    const uchar *k;    uint h = 0;    uint g;    if(name) {        k = (const uchar *) name;        while((*k) &&                (*k)!= ':' &&                (*k)!=',' &&                (*k)!=' ') {            h = (h << 4) + *k++;            if((g = (h & 0xf0000000)) != 0)                h ^= g >> 24;            h &= ~g;        }    }    if(!h)        h = 1;    return h;}//#define USE_DISPLAY_HASH#ifdef USE_DISPLAY_HASHstatic void displayHash(const char* str){    printf("case 0x%07x: // %s\n    break;\n", elfHash(str), str);}#endifbool VCLinkerTool::parseOption(const char* option){#ifdef USE_DISPLAY_HASH    // Main options    displayHash("/ALIGN"); displayHash("/ALLOWBIND"); displayHash("/ASSEMBLYMODULE");    displayHash("/ASSEMBLYRESOURCE"); displayHash("/BASE"); displayHash("/DEBUG");    displayHash("/DEF"); displayHash("/DEFAULTLIB"); displayHash("/DELAY");    displayHash("/DELAYLOAD"); displayHash("/DLL"); displayHash("/DRIVER");    displayHash("/ENTRY"); displayHash("/EXETYPE"); displayHash("/EXPORT");    displayHash("/FIXED"); displayHash("/FORCE"); displayHash("/HEAP");    displayHash("/IDLOUT"); displayHash("/IGNORE"); displayHash("/IGNOREIDL"); displayHash("/IMPLIB");    displayHash("/INCLUDE"); displayHash("/INCREMENTAL"); displayHash("/LARGEADDRESSAWARE");    displayHash("/LIBPATH"); displayHash("/LTCG"); displayHash("/MACHINE");    displayHash("/MAP"); displayHash("/MAPINFO"); displayHash("/MERGE");    displayHash("/MIDL"); displayHash("/NOASSEMBLY"); displayHash("/NODEFAULTLIB");    displayHash("/NOENTRY"); displayHash("/NOLOGO"); displayHash("/OPT");    displayHash("/ORDER"); displayHash("/OUT"); displayHash("/PDB");    displayHash("/PDBSTRIPPED"); displayHash("/RELEASE"); displayHash("/SECTION");    displayHash("/STACK"); displayHash("/STUB"); displayHash("/SUBSYSTEM");    displayHash("/SWAPRUN"); displayHash("/TLBID"); displayHash("/TLBOUT");    displayHash("/TSAWARE"); displayHash("/VERBOSE"); displayHash("/VERSION");    displayHash("/VXD"); displayHash("/WS "); displayHash("/libpath");#endif#ifdef USE_DISPLAY_HASH    // Sub options    displayHash("UNLOAD"); displayHash("NOBIND"); displayHash("no"); displayHash("NOSTATUS"); displayHash("STATUS");    displayHash("AM33"); displayHash("ARM"); displayHash("CEE"); displayHash("EBC"); displayHash("IA64"); displayHash("X86"); displayHash("X64"); displayHash("M32R");    displayHash("MIPS"); displayHash("MIPS16"); displayHash("MIPSFPU"); displayHash("MIPSFPU16"); displayHash("MIPSR41XX"); displayHash("PPC");    displayHash("SH3"); displayHash("SH3DSP"); displayHash("SH4"); displayHash("SH5"); displayHash("THUMB"); displayHash("TRICORE"); displayHash("EXPORTS");    displayHash("LINES"); displayHash("REF"); displayHash("NOREF"); displayHash("ICF"); displayHash("WIN98"); displayHash("NOWIN98");    displayHash("CONSOLE"); displayHash("EFI_APPLICATION"); displayHash("EFI_BOOT_SERVICE_DRIVER"); displayHash("EFI_ROM"); displayHash("EFI_RUNTIME_DRIVER"); displayHash("NATIVE");    displayHash("POSIX"); displayHash("WINDOWS"); displayHash("WINDOWSCE"); displayHash("NET"); displayHash("CD"); displayHash("NO");#endif    bool found = true;    switch (elfHash(option)) {    case 0x3360dbe: // /ALIGN[:number]    case 0x1485c34: // /ALLOWBIND[:NO]    case 0x6b21972: // /DEFAULTLIB:library    case 0x396ea92: // /DRIVER[:UPONLY | :WDM]    case 0xaca9d75: // /EXETYPE[:DYNAMIC | :DEV386]    case 0x3ad5444: // /EXPORT:entryname[,@ordinal[,NONAME]][,DATA]    case 0x33aec94: // /FIXED[:NO]    case 0x33b4675: // /FORCE:[MULTIPLE|UNRESOLVED]    case 0x3dc3455: // /IGNORE:number,number,number,number  ### NOTE: This one is undocumented, but it is even used by Microsoft.                    //                                      In recent versions of the Microsoft linker they have disabled this undocumented feature.    case 0x7988f7e: // /SECTION:name,[E][R][W][S][D][K][L][P][X][,ALIGN=#]    case 0x0348992: // /STUB:filename    case 0x0034bc4: // /VXD    case 0x0034c50: // /WS        AdditionalOptions += option;        break;    case 0x679c075: // /ASSEMBLYMODULE:filename        AddModuleNamesToAssembly += option+15;        break;    case 0x062d065: // /ASSEMBLYRESOURCE:filename        LinkToManagedResourceFile = option+18;        break;    case 0x0336675: // /BASE:{address | @filename,key}        // Do we need to do a manual lookup when '@filename,key'?        // Seems BaseAddress only can contain the location...        // We don't use it in Qt, so keep it simple for now        BaseAddress = option+6;        break;    case 0x3389797: // /DEBUG        GenerateDebugInformation = _True;        break;    case 0x0033896: // /DEF:filename        ModuleDefinitionFile = option+5;        break;    case 0x338a069: // /DELAY:{UNLOAD | NOBIND}        // MS documentation does not specify what to do with        // this option, so we'll put it in AdditionalOptions        AdditionalOptions += option;        break;    case 0x06f4bf4: // /DELAYLOAD:dllname        DelayLoadDLLs += option+11;        break;    case 0x003390c: // /DLL        // This option is not used for vcproj files        break;    case 0x33a3979: // /ENTRY:function

⌨️ 快捷键说明

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