📄 msvc_objectmodel.cpp
字号:
EntryPointSymbol = option+7; break; case 0x033c960: // /HEAP:reserve[,commit] { QStringList both = QString(option+6).split(","); HeapReserveSize = both[0].toLongLong(); if(both.count() == 2) HeapCommitSize = both[1].toLongLong(); } break; case 0x3d91494: // /IDLOUT:[path\]filename MergedIDLBaseFileName = option+8; break; case 0x345a04c: // /IGNOREIDL IgnoreEmbeddedIDL = _True; break; case 0x3e250e2: // /IMPLIB:filename ImportLibrary = option+8; break; case 0xe281ab5: // /INCLUDE:symbol ForceSymbolReferences += option+9; break; case 0xb28103c: // /INCREMENTAL[:no] if(*(option+12) == ':' && (*(option+13) == 'n' || *(option+13) == 'N')) LinkIncremental = linkIncrementalNo; else LinkIncremental = linkIncrementalYes; break; case 0x26e4675: // /LARGEADDRESSAWARE[:no] if(*(option+18) == ':' && *(option+19) == 'n') LargeAddressAware = addrAwareNoLarge; else LargeAddressAware = addrAwareLarge; break; case 0x2f96bc8: // /libpath:dir case 0x0d745c8: // /LIBPATH:dir AdditionalLibraryDirectories += option+9; break; case 0x0341877: // /LTCG[:NOSTATUS|:STATUS] config->WholeProgramOptimization = _True; LinkTimeCodeGeneration = _True; if(*(option+5) == ':' && *(option+6) == 'S') ShowProgress = linkProgressAll; break; case 0x157cf65: // /MACHINE:{AM33|ARM|CEE|IA64|X86|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|MIPSR41XX|PPC|SH3|SH4|SH5|THUMB|TRICORE} switch (elfHash(option+9)) { // Very limited documentation on all options but X86, case 0x0005bb6: // X86 TargetMachine = machineX86; break; // so we put the others in AdditionalOptions... case 0x0005b94: // X64 case 0x0046063: // AM33 case 0x000466d: // ARM case 0x0004795: // CEE case 0x0004963: // EBC case 0x004d494: // IA64 case 0x0050672: // M32R case 0x0051e53: // MIPS case 0x51e5646: // MIPS16 case 0x1e57b05: // MIPSFPU case 0x57b09a6: // MIPSFPU16 case 0x5852738: // MIPSR41XX case 0x0005543: // PPC case 0x00057b3: // SH3 case 0x57b7980: // SH3DSP case 0x00057b4: // SH4 case 0x00057b5: // SH5 case 0x058da12: // THUMB case 0x96d8435: // TRICORE default: AdditionalOptions += option; break; } break; case 0x0034160: // /MAP[:filename] GenerateMapFile = _True; MapFileName = option+5; break; case 0x164e1ef: // /MAPINFO:{EXPORTS|LINES} if(*(option+9) == 'E') MapExports = _True; else if(*(option+9) == 'L') MapLines = _True; break; case 0x341a6b5: // /MERGE:from=to MergeSections = option+7; break; case 0x0341d8c: // /MIDL:@file MidlCommandFile = option+7; break; case 0x84e2679: // /NOASSEMBLY TurnOffAssemblyGeneration = _True; break; case 0x2b21942: // /NODEFAULTLIB[:library] if(*(option+13) == '\0') IgnoreAllDefaultLibraries = _True; else IgnoreDefaultLibraryNames += option+14; break; case 0x33a3a39: // /NOENTRY ResourceOnlyDLL = _True; break; case 0x434138f: // /NOLOGO SuppressStartupBanner = _True; break; case 0x0034454: // /OPT:{REF | NOREF | ICF[=iterations] | NOICF | WIN98 | NOWIN98} { char third = *(option+7); switch (third) { case 'F': // REF if(*(option+5) == 'R') { OptimizeReferences = optReferences; } else { // ICF[=iterations] EnableCOMDATFolding = optFolding; // [=iterations] case is not documented } break; case 'R': // NOREF OptimizeReferences = optNoReferences; break; case 'I': // NOICF EnableCOMDATFolding = optNoFolding; break; case 'N': // WIN98 OptimizeForWindows98 = optWin98Yes; break; case 'W': // NOWIN98 OptimizeForWindows98 = optWin98No; break; default: found = false; } } break; case 0x34468a2: // /ORDER:@filename FunctionOrder = option+8; break; case 0x00344a4: // /OUT:filename OutputFile = option+5; break; case 0x0034482: // /PDB:filename ProgramDatabaseFile = option+5; break; case 0xa2ad314: // /PDBSTRIPPED:pdb_file_name StripPrivateSymbols = option+13; break; case 0x6a09535: // /RELEASE SetChecksum = _True; break; case 0x348857b: // /STACK:reserve[,commit] { QStringList both = QString(option+7).split(","); StackReserveSize = both[0].toLongLong(); if(both.count() == 2) StackCommitSize = both[1].toLongLong(); } break; case 0x78dc00d: // /SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}[,major[.minor]] { // Split up in subsystem, and version number QStringList both = QString(option+11).split(","); switch (elfHash(both[0].toLatin1())) { case 0x8438445: // CONSOLE SubSystem = subSystemConsole; break; case 0xbe29493: // WINDOWS SubSystem = subSystemWindows; break; // The following are undocumented, so add them to AdditionalOptions case 0x240949e: // EFI_APPLICATION case 0xe617652: // EFI_BOOT_SERVICE_DRIVER case 0x9af477d: // EFI_ROM case 0xd34df42: // EFI_RUNTIME_DRIVER case 0x5268ea5: // NATIVE case 0x05547e8: // POSIX case 0x2949c95: // WINDOWSCE AdditionalOptions += option; break; default: found = false; } } break; case 0x8b654de: // /SWAPRUN:{NET | CD} if(*(option+9) == 'N') SwapRunFromNet = _True; else if(*(option+9) == 'C') SwapRunFromCD = _True; else found = false; break; case 0x34906d4: // /TLBID:id TypeLibraryResourceID = QString(option+7).toLongLong(); break; case 0x4907494: // /TLBOUT:[path\]filename TypeLibraryFile = option+8; break; case 0x976b525: // /TSAWARE[:NO] if(*(option+8) == ':') TerminalServerAware = termSvrAwareNo; else TerminalServerAware = termSvrAwareYes; break; case 0xaa67735: // /VERBOSE[:lib] if(*(option+9) == ':') { ShowProgress = linkProgressLibs; AdditionalOptions += option; } else { ShowProgress = linkProgressAll; } break; case 0xaa77f7e: // /VERSION:major[.minor] Version = option+9; break; default: AdditionalOptions += option; break; } if(!found) { warn_msg(WarnLogic, "Could not parse Linker options: %s, added as AdditionalOption", option); AdditionalOptions += option; } return found;}// VCMIDLTool -------------------------------------------------------VCMIDLTool::VCMIDLTool() : DefaultCharType(midlCharUnsigned), EnableErrorChecks(midlDisableAll), ErrorCheckAllocations(unset), ErrorCheckBounds(unset), ErrorCheckEnumRange(unset), ErrorCheckRefPointers(unset), ErrorCheckStubData(unset), GenerateStublessProxies(unset), GenerateTypeLibrary(unset), IgnoreStandardIncludePath(unset), MkTypLibCompatible(unset), StructMemberAlignment(midlAlignNotSet), SuppressStartupBanner(unset), TargetEnvironment(midlTargetNotSet), ValidateParameters(unset), WarnAsError(unset), WarningLevel(midlWarningLevel_0){}XmlOutput &operator<<(XmlOutput &xml, const VCMIDLTool &tool){ return xml << tag(_Tool) << attrS(_Name, _VCMIDLTool) << attrX(_AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories) << attrX(_AdditionalOptions, tool.AdditionalOptions, " ") << attrX(_CPreprocessOptions, tool.CPreprocessOptions) << attrE(_DefaultCharType, tool.DefaultCharType) << attrS(_DLLDataFileName, tool.DLLDataFileName) << attrE(_EnableErrorChecks, tool.EnableErrorChecks) << attrT(_ErrorCheckAllocations, tool.ErrorCheckAllocations) << attrT(_ErrorCheckBounds, tool.ErrorCheckBounds) << attrT(_ErrorCheckEnumRange, tool.ErrorCheckEnumRange) << attrT(_ErrorCheckRefPointers, tool.ErrorCheckRefPointers) << attrT(_ErrorCheckStubData, tool.ErrorCheckStubData) << attrX(_FullIncludePath, tool.FullIncludePath) << attrT(_GenerateStublessProxies, tool.GenerateStublessProxies) << attrT(_GenerateTypeLibrary, tool.GenerateTypeLibrary) << attrS(_HeaderFileName, tool.HeaderFileName) << attrT(_IgnoreStandardIncludePath, tool.IgnoreStandardIncludePath) << attrS(_InterfaceIdentifierFileName, tool.InterfaceIdentifierFileName) << attrT(_MkTypLibCompatible, tool.MkTypLibCompatible) << attrS(_OutputDirectory, tool.OutputDirectory) << attrX(_PreprocessorDefinitions, tool.PreprocessorDefinitions) << attrS(_ProxyFileName, tool.ProxyFileName) << attrS(_RedirectOutputAndErrors, tool.RedirectOutputAndErrors) << attrE(_StructMemberAlignment, tool.StructMemberAlignment, /*ifNot*/ midlAlignNotSet) << attrT(_SuppressStartupBanner, tool.SuppressStartupBanner) << attrE(_TargetEnvironment, tool.TargetEnvironment, /*ifNot*/ midlTargetNotSet) << attrS(_TypeLibraryName, tool.TypeLibraryName) << attrX(_UndefinePreprocessorDefinitions, tool.UndefinePreprocessorDefinitions) << attrT(_ValidateParameters, tool.ValidateParameters) << attrT(_WarnAsError, tool.WarnAsError) << attrE(_WarningLevel, tool.WarningLevel) << closetag(_Tool);}bool VCMIDLTool::parseOption(const char* option){#ifdef USE_DISPLAY_HASH displayHash("/D name[=def]"); displayHash("/I directory-list"); displayHash("/Oi"); displayHash("/Oic"); displayHash("/Oicf"); displayHash("/Oif"); displayHash("/Os"); displayHash("/U name"); displayHash("/WX"); displayHash("/W{0|1|2|3|4}"); displayHash("/Zp {N}"); displayHash("/Zs"); displayHash("/acf filename"); displayHash("/align {N}"); displayHash("/app_config"); displayHash("/c_ext"); displayHash("/char ascii7"); displayHash("/char signed"); displayHash("/char unsigned"); displayHash("/client none"); displayHash("/client stub"); displayHash("/confirm"); displayHash("/cpp_cmd cmd_line"); displayHash("/cpp_opt options"); displayHash("/cstub filename"); displayHash("/dlldata filename"); displayHash("/env win32"); displayHash("/env win64"); displayHash("/error all"); displayHash("/error allocation"); displayHash("/error bounds_check"); displayHash("/error enum"); displayHash("/error none"); displayHash("/error ref"); displayHash("/error stub_data"); displayHash("/h filename"); displayHash("/header filename"); displayHash("/iid filename"); displayHash("/lcid"); displayHash("/mktyplib203");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -