VC編譯鏈接選項詳解

你們可能一直在用VC開發軟件,可是對於這個編譯器卻未必很瞭解。緣由是多方面的。大多數狀況下,咱們只停留在「使用」它,而不會想去「瞭解」它。由於它只是一個工具,咱們寧肯把更多的精力放在C++語言和軟件設計上。咱們習慣於這樣一種「模式」:創建一個項目,而後寫代碼,而後編譯,反反覆覆調試。可是,所謂:「公欲善其事,必先利其器」。若是咱們精於VC開發環境,咱們是否是可以作得更加遊刃有餘呢?git

  VC的處理流程,大體分爲兩步:編譯和鏈接。源文件經過編譯生成了.obj文件;全部.obj文件和.lib文件經過鏈接生成.exe文件或.dll文件。下面,咱們分別討論這兩個步驟的一些細節。數據庫

  編譯參數的設置。主要經過VC的菜單項Project->Settings->C/C++頁來完成。咱們能夠看到這一頁的最下面Project Options中的內容,通常以下:windows

/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_M
BCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c瀏覽器

  各個參數表明的意義,能夠參考Msdn。好比/nologo表示編譯時不在輸出窗口顯示這些設置(咱們能夠把這個參數去掉來看看效果)等等。通常咱們不會直接修改這些設置,而是經過這一頁最上面的Category中的各項來完成。網絡

  1) General:一些整體設置。Warning level用來控制警告信息,其中Level 1是最嚴重的級別;Warnings as errors將警告信息看成錯誤處理;Optimizations是代碼優化,能夠在Category的Optimizations項中進行更細的設置;Generate browse info用以生成.sbr文件,記錄類、變量等符號信息,能夠在Category的Listing Files項中進行更多的設置。Debug info,生成調試信息:None,不產生任何調試信息(編譯比較快);Line Numbers Only,僅生成全局的和外部符號的調試信息到.OBJ文件或.EXE文件,減少目標文件的尺寸;C 7.0- Compatible,記錄調試器用到的全部符號信息到.OBJ文件和.EXE文件;Program Database,建立.PDB文件記錄全部調試信息;Program Database for "Edit & Continue",建立.PDB文件記錄全部調試信息,而且支持調試時編輯。數據結構

  2) C++ Language:pointer_to_member representation用來設置類定義/引用的前後關係,通常爲Best-Case Always表示在引用類以前該類確定已經定義了;Enable Exception Handling,進行同步的異常處理;Enable Run-Time Type Information迫使編譯器增長代碼在運行時進行對象類型檢查;Disable Construction Displacements,設置類構造/析構函數調用虛函數問題。多線程

  3) Code Generation:Processor表示代碼指令優化,能夠爲8038六、8048六、Pentium、Pentium Pro,或者Blend表示混合以上各類優化。Use run-time library用以指定程序運行時使用的運行時庫(單線程或多線程,Debug版本或Release版本),有一個原則就是,一個進程不要同時使用幾個版本的運行時庫。Single-Threaded,靜態鏈接LIBC.LIB庫;Debug Single-Threaded,靜態鏈接LIBCD.LIB庫;Multithreaded,靜態鏈接LIBCMT.LIB庫;Debug Multithreaded,靜態鏈接LIBCMTD.LIB庫;Multithreaded DLL,動態鏈接MSVCRT.DLL庫;Debug Multithreaded DLL,動態鏈接MSVCRTD.DLL庫。鏈接了單線程庫就不支持多線程調用,鏈接了多線程庫就要求建立多線程的應用程序。

  Calling convention能夠用來設定調用約定,有三種:__cdecl、__fastcall和__stdcall。各類調用約定的主要區別在於,函數調用時,函數的參數是從左到右壓入堆棧仍是從右到左壓入堆棧;在函數返回時,由函數的調用者來清理壓入堆棧的參數仍是由函數自己來清理;以及在編譯時對函數名進行的命名修飾(能夠經過Listing Files看到各類命名修飾方式)。Struct member alignment用以指定數據結構中的成員變量在內存中是按幾字節對齊的,根據計算機數據總線的位數,不一樣的對齊方式存取數據的速度不同。這個參數對數據包網絡傳輸等應用尤其重要,不是存取速度問題,而是數據位的精肯定義問題,通常在程序中使用#pragma pack來指定。
  4) Customize:Disable Language Extensions,表示不使用微軟爲標準C作的語言擴展;Eliminate Duplicate Strings,主要用於字符串優化(將字符串放到緩充池裏以節省空間),使用這個參數,使得 框架

char *sBuffer = "This is a character buffer";異步

char *tBuffer = "This is a character buffer";async

  sBuffer和tBuffer指向的是同一塊內存空間;Enable Function-Level Linking ,告訴編譯器將各個函數按打包格式編譯;Enables minimal rebuild,經過保存關聯信息到.IDB文件,使編譯器只對最新類定義改動過的源文件進行重編譯,提升編譯速度;Enable Incremental Compilation,一樣經過.IDB文件保存的信息,只重編譯最新改動過的函數;Suppress Startup Banner and Information Messages,用以控制參數是否在output窗口輸出。

  5) Listing Files:Generate browse info的功能上面已經提到過。這裏能夠進行更多的設置。Exclude Local Variables from Browse Info表示是否將局部變量的信息放到.SBR文件中。Listing file type能夠設置生成的列表信息文件的內容:Assembly-Only Listing僅生成彙編代碼文件(.ASM擴展名);Assembly With Machine Code生成機器代碼和彙編代碼文件(.COD擴展名);Assembly With Source Code生成源代碼和彙編代碼文件(.ASM擴展名);Assembly, Machine Code,and Source生成機器碼、源代碼和彙編代碼文件(.COD擴展名)。Listing file name爲生成的信息文件的路徑,通常爲Debug或Release目錄下,生成的文件名自動取源文件的文件名。

  6) Optimizations:代碼優化設置。能夠選擇Maximize Speed生成最快速的代碼,或Minimize Size生成最小尺寸的程序,或者Customize定製優化。定製的內容包括:

  Assume No Aliasing,不使用別名(提升速度);

  Assume Aliasing Across Function Calls,僅函數內部不使用別名;

  Global Optimizations,全局優化,好比常常用到的變量使用寄存器保存,或者循環內的計算優化,如

i = -100;

while( i < 0 ){ i += x + y;}

  會被優化爲

i = -100;
t = x + y;
while( i < 0 ){i += t;}
Generate Intrinsic Functions,使用內部函數替換一些函數調用(提升速度);
Improve Float Consistency,浮點運算方面的優化;
Favor Small Code,程序(exe或dll)尺寸優化優先於代碼速度優化;
Favor Fast Code,程序(exe或dll)代碼速度優化優先於尺寸優化;
Frame-Pointer Omission,不使用幀指針,以提升函數調用速度;
Full Optimization,組合了幾種參數,以生成最快的程序代碼。

  Inline function expansion,內聯函數擴展的三種優化(使用內聯能夠節省函數調用的開銷,加快程序速度):Disable不使用內聯;Only __inline,僅函數定義前有inline或__inline標記使用內聯;Any Suitable,除了inline或__inline標記的函數外,編譯器「以爲」應該使用內聯的函數,都使用內聯。

  7) Precompiled Headers:預編譯頭文件的設置。使用預編譯能夠提升重複編譯的速度。VC通常將一些公共的、不大變更的頭文件(好比afxwin.h等)集中放到stdafx.h中,這一部分代碼就沒必要每次都從新編譯(除非是Rebuild All)。

  8) Preprocessor:預編譯處理。能夠定義/解除定義一些常量。Additional include directories,能夠指定額外的包含目錄,通常是相對於本項目的目錄,如..\Include。

  鏈接參數的設置。主要經過VC的菜單項Project->Settings->Link頁來完成。咱們能夠看到這一頁的最下面Project Options中的內容,通常以下:

/nologo /subsystem:windows /incremental:yes /pdb:"Debug/WritingDlgTest.pdb" /debug /machi
ne:I386 /out:"Debug/WritingDlgTest.exe" /pdbtype:sept

  下面咱們分別來看一下Category中的各項設置。

  1) General:一些整體設置。能夠設置生成的文件路徑、文件名;鏈接的庫文件;Generate debug info,生成Debug信息到.PDB文件(具體格式能夠在Category->Debug中設置);Ignore All Default Libraries,放棄全部默認的庫鏈接;Link Incrementally,經過生成. ILK文件實現遞增式鏈接以提升後續鏈接速度,但通常這種方式下生成的文件(EXE或DLL)較大;Generate Mapfile,生成.MAP文件記錄模塊相關信息;Enable Profiling,這個參數一般與Generate Mapfile參數同時使用,並且若是產生Debug信息的話,不能用.PDB文件,並且必須用Microsoft Format。

  2) Customize:這裏能夠進行使用程序數據庫文件的設置。Force File Output ,強制產生輸出文件(EXE或DLL);Print Progress Messages,能夠將鏈接過程當中的進度信息輸出到Output窗口。

  3) Debug:設置是否生成調試信息,以及調試信息的格式。格式能夠有Microsoft Format、COFF Format(Common Object File Format)和Both Formats三種選擇;Separate Types,表示將Debug格式信息以獨立的.PDB文件存放,仍是直接放在各個源文件的.PDB文件中。選中的話,表示採用後者的方式,這種方式調試啓動比較快。

  4) Input:這裏能夠指定要鏈接的庫文件,放棄鏈接的庫文件。還能夠增長額外的庫文件目錄,通常是相對於本項目的目錄,如..\Lib。Force Symbol References,能夠指定鏈接特定符號定義的庫。

  5) Output:Base Address能夠改變程序默認的基地址(EXE文件默認爲0x400000,DLL默認爲x10000000),操做系統裝載一個程序時老是試着先從這個基地址開始。Entry-Point Symbol能夠指定程序的入口地址,通常爲一個函數名(且必須採用__stdcall調用約定)。通常Win32的程序,EXE的入口爲WinMain,DLL的入口爲DllEntryPoint;最好讓鏈接器自動設置程序的入口點。默認狀況下,經過一個C的運行時庫函數來實現:控制檯程序採用mainCRTStartup (或wmainCRTStartup)去調用程序的main (或wmain)函數;Windows程序採用WinMainCRTStartup (或 wWinMainCRTStartup)調用程序的WinMain (或 wWinMain,必須採用__stdcall調用約定);DLL採用_DllMainCRTStartup調用DllMain函數(必須採用__stdcall調用約定)。Stack allocations,用以設置程序使用的堆棧大小(請使用十進制),默認爲1兆字節。Version Information告訴鏈接器在EXE或DLL文件的開始部分放上版本號。

  值得注意的是,上面各個參數是大小寫敏感的;在參數後加上「-」表示該參數無效;各個參數值選項
有「*」的表示爲該參數的默認值;可使用頁右上角的「Reset」按鈕來恢復該頁的全部默認設置。

  其它一些參數設置

  1) Project->Settings->General,能夠設置鏈接MFC庫的方式(靜態或動態)。若是是動態連
接,在你的軟件發佈時不要忘了帶上MFC的DLL。

  2) Project->Settings->Debug,能夠設置調試時運行的可執行文件,以及命令行參數等。

  3) Project->Settings->Custom Build,能夠設置編譯/鏈接成功後自動執行一些操做。比較有
用的是,寫COM時但願VC對編譯經過的COM文件自動註冊,能夠以下設置:

   Description: Register COM

   Commands: regsvr32 /s /c $(TargetPath)

   echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg

   Outputs: $(TargetDir)\$(TargetName).trg

  4) Tools->Options->Directories,設置系統的Include、Library路徑。

  一些小竅門

  1) 有時候,你可能在編譯的時候,計算機忽然非法關機了(可能某人不當心碰了電源或你的內存不穩定等緣由)。當你重啓機器後打開剛纔的項目,從新進行編譯,發現VC會崩掉。你或許覺得你的VC編譯器壞了,其實否則(你試試編譯其它項目,仍是好的!),你只要將項目的.ncb、.opt、.aps、.clw文件以及Debug、Release目錄下的全部文件都刪掉,而後從新編譯就行
了。

  2) 若是你想與別人共享你的源代碼項目,可是把整個項目作拷貝又太大。你徹底能夠刪掉如下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目錄下的全部文件。

  3) 當你的Workspace中包含多個Project的時候,你可能不能直觀地、一眼看出來哪一個是當前項目。能夠以下設置:Tools->Options->Format,而後在Category中選擇Workspace window,改變其默認的字體(好比設成Fixedsys)就好了。

  4) 如何給已有的Project更名字?將該Project關掉。而後以文本格式打開.dsp文件,替換原來的Project名字便可。

  5) VC6對類成員的智能提示功能頗有用,但有時候會失靈。你能夠先關掉項目,將.clw和.ncb刪掉,而後從新打開項目,點擊菜單項View->ClassWizard,在彈出的對話框中按一下「Add All」按鈕;從新Rebuild All。應該能夠解決問題。

/******************編譯參數詳細的說明**********************************

-優化-
/O1 最小化空間 minimize space
/Op[-] 改善浮點數一致性 improve floating-pt consistency
/O2 最大化速度 maximize speed
/Os 優選代碼空間 favor code space
/Oa 假設沒有別名 assume no aliasing
/Ot 優選代碼速度 favor code speed
/Ob 內聯展開(默認 n=0) inline expansion (default n=0)
/Ow 假設交叉函數別名 assume cross-function aliasing
/Od 禁用優化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啓用全局優化 enable global optimization
/Oy[-] 啓用框架指針省略 enable frame pointer omission
/Oi 啓用內建函數 enable intrinsic functions

-代碼生成-
/G3 爲 80386 進行優化 optimize for 80386
/G4 爲 80486 進行優化 optimize for 80486
/GR[-] 啓用 C++ RTTI enable C++ RTTI
/G5 爲 Pentium 進行優化 optimize for Pentium
/G6 爲 Pentium Pro 進行優化 optimize for Pentium Pro
/GX[-] 啓用 C++ 異常處理(與 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 啓用同步 C++ 異常處理 enable synchronous C++ EH
/GD 爲 Windows DLL 進行優化 optimize for Windows DLL
/GB 爲混合模型進行優化(默認) optimize for blended model (default)
/EHa 啓用異步 C++ 異常處理 enable asynchronous C++ EH
/Gd __cdecl 調用約定 __cdecl calling convention
/EHc extern「C」默認爲 nothrow extern "C" defaults to nothrow
/Gr __fastcall 調用約定 __fastcall calling convention
/Gi[-] 啓用增量編譯 enable incremental compilation
/Gz __stdcall 調用約定 __stdcall calling convention
/Gm[-] 啓用最小從新生成 enable minimal rebuild
/GA 爲 Windows 應用程序進行優化 optimize for Windows Application
/Gf 啓用字符串池 enable string pooling
/QIfdiv[-] 啓用 Pentium FDIV 修復 enable Pentium FDIV fix
/GF 啓用只讀字符串池 enable read-only string pooling
/QI0f[-] 啓用 Pentium 0x0f 修復 enable Pentium 0x0f fix
/Gy 分隔連接器函數 separate functions for linker
/GZ 啓用運行時調試檢查 enable runtime debug checks
/Gh 啓用鉤子函數調用 enable hook function call
/Ge 對全部函數強制堆棧檢查 force stack checking for all funcs
/Gs[num] 禁用堆棧檢查調用 disable stack checking calls

-輸出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名對象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名預編譯頭文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源瀏覽器文件 name source browser file
/Fe 命名可執行文件 name executable file
/FR[file] 命名擴展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file

-預處理器-
/FI 命名強制包含文件 name forced include file
/C 不吸收註釋 don't strip comments
/U 移除預約義宏 remove predefined macro
/D{=|#} 定義宏 define macro
/u 移除全部預約義宏 remove all predefined macros
/E 將預處理定向到標準輸出 preprocess to stdout
/I 添加到包含文件的搜索路徑 add to include search path
/EP 將預處理定向到標準輸出,不要帶行號 preprocess to stdout, no #line
/X 忽略「標準位置」 ignore "standard places"
/P 預處理到文件 preprocess to file

-語言-
/Zi 啓用調試信息 enable debugging information
/Zl 忽略 .OBJ 中的默認庫名 omit default library name in .OBJ
/ZI 啓用調試信息的「編輯並繼續」功能 enable Edit and Continue debug info
/Zg 生成函數原型 generate function prototypes
/Z7 啓用舊式調試信息 enable old-style debug info
/Zs 只進行語法檢查 syntax check only
/Zd 僅要行號調試信息 line number debugging info only
/vd{0|1} 禁用/啓用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 字節邊界上包裝結構 pack structs on n-byte boundary
/vm 指向成員的指針類型 type of pointers to members
/Za 禁用擴展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用「bool」關鍵字 disable "bool" keyword
/Ze 啓用擴展(默認) enable extensions (default)

- 雜項 -
/?, /help 打印此幫助消息 print this help message
/c 只編譯,不連接 compile only, no link
/W 設置警告等級(默認 n=1) set warning level (default n=1)
/H 最大化外部名稱長度 max external name length
/J 默認 char 類型是 unsigned default char type is unsigned
/nologo 取消顯示版權消息 suppress copyright message
/WX 將警告視爲錯誤 treat warnings as errors
/Tc 將文件編譯爲 .c compile file as .c
/Yc[file] 建立 .PCH 文件 create .PCH file
/Tp 將文件編譯爲 .cpp compile file as .cpp
/Yd 將調試信息放在每一個 .OBJ 中 put debug info in every .OBJ
/TC 將全部文件編譯爲 .c compile all files as .c
/TP 將全部文件編譯爲 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 設置版本字符串 set version string
/YX[file] 自動的 .PCH 文件 automatic .PCH
/w 禁用全部警告 disable all warnings
/Zm 最大內存分配(默認爲 %) max memory alloc (% of default)

-連接-
/MD 與 MSVCRT.LIB 連接 link with MSVCRT.LIB
/MDd 與 MSVCRTD.LIB 調試庫連接 link with MSVCRTD.LIB debug lib
/ML 與 LIBC.LIB 連接 link with LIBC.LIB
/MLd 與 LIBCD.LIB 調試庫連接 link with LIBCD.LIB debug lib
/MT 與 LIBCMT.LIB 連接 link with LIBCMT.LIB
/MTd 與 LIBCMTD.LIB 調試庫連接 link with LIBCMTD.LIB debug lib
/LD 建立 .DLL Create .DLL
/F 設置堆棧大小 set stack size
/LDd 建立 .DLL 調試庫 Create .DLL debug libary
/link [連接器選項和庫] [linker options and libraries]

 

 

 

VC編譯選項

 

/Od  禁用優化(默認值)  disable optimizations (default)

/Ox  最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)

/Og  啓用全局優化  enable global optimization 

/Oy[-]  啓用框架指針省略  enable frame pointer omission

/Oi  啓用內建函數  enable intrinsic functions

 

 

-代碼生成- 

/G3  爲 80386 進行優化  optimize for 80386

/G4  爲 80486 進行優化  optimize for 80486

/GR[-]  啓用 C++ RTTI  enable C++ RTTI

/G5  爲 Pentium 進行優化  optimize for Pentium

/G6 爲 Pentium Pro 進行優化  optimize for Pentium Pro

/GX[-]  啓用 C++ 異常處理(與 /EHsc 相同)  enable C++ EH (same as /EHsc)

/EHs  啓用同步 C++ 異常處理  enable synchronous C++ EH

/GD 爲 Windows DLL 進行優化 optimize for Windows DLL

/GB  爲混合模型進行優化(默認)  optimize for blended model (default)

/EHa  啓用異步 C++ 異常處理  enable asynchronous C++ EH

/Gd  __cdecl 調用約定  __cdecl calling convention 

/EHc  extern「C」默認爲 nothrow  extern "C" defaults to nothrow

/Gr  __fastcall 調用約定  __fastcall calling convention

/Gi[-] 啓用增量編譯 enable incremental compilation

/Gz  __stdcall 調用約定  __stdcall calling convention 

/Gm[-]  啓用最小從新生成  enable minimal rebuild

/GA  爲 Windows 應用程序進行優化 optimize for Windows Application

/Gf  啓用字符串池  enable string pooling 

/QIfdiv[-]  啓用 Pentium FDIV 修復  enable Pentium FDIV fix 

/GF  啓用只讀字符串池  enable read-only string pooling 

/QI0f[-]  啓用 Pentium 0x0f 修復  enable Pentium 0x0f fix

/Gy  分隔連接器函數  separate functions for linker

/GZ  啓用運行時調試檢查 enable runtime debug checks

/Gh 啓用鉤子函數調用 enable hook function call

/Ge  對全部函數強制堆棧檢查  force stack checking for all funcs

/Gs[num]  禁用堆棧檢查調用  disable stack checking calls

 

 

-輸出文件- 

/Fa[file]  命名程序集列表文件  name assembly listing file

/Fo  命名對象文件  name object file

/FA[sc]  配置程序集列表  configure assembly listing 

/Fp  命名預編譯頭文件  name precompiled header file

/Fd[file]  命名 .PDB 文件  name .PDB file 

/Fr[file]  命名源瀏覽器文件  name source browser file

/Fe  命名可執行文件  name executable file

/FR[file]  命名擴展 .SBR 文件  name extended .SBR file

/Fm[file]  命名映射文件  name map file

 

 

-預處理器-  

/FI  命名強制包含文件  name forced include file

/C  不吸收註釋  don't strip comments 

/U  移除預約義宏  remove predefined macro

/D{=|#}  定義宏  define macro

/u  移除全部預約義宏  remove all predefined macros

/E  將預處理定向到標準輸出 preprocess to stdout

/I 添加到包含文件的搜索路徑  add to include search path

/EP  將預處理定向到標準輸出,不要帶行號  preprocess to stdout, no #line

/X  忽略「標準位置」  ignore "standard places"

/P  預處理到文件  preprocess to file

 

 

-語言- 

/Zi  啓用調試信息  enable debugging information

/Zl  忽略 .OBJ 中的默認庫名  omit default library name in .OBJ

/ZI  啓用調試信息的「編輯並繼續」功能 enable Edit and Continue debug info

/Zg  生成函數原型  generate function prototypes

/Z7  啓用舊式調試信息  enable old-style debug info

/Zs  只進行語法檢查  syntax check only

/Zd  僅要行號調試信息  line number debugging info only

/vd{0|1}  禁用/啓用 vtordisp  disable/enable vtordisp

/Zp[n]  在 n 字節邊界上包裝結構  pack structs on n-byte boundary

/vm  指向成員的指針類型  type of pointers to members

/Za  禁用擴展(暗指 /Op)  disable extensions (implies /Op)

/noBool  禁用「bool」關鍵字  disable "bool" keyword

/Ze  啓用擴展(默認)  enable extensions (default)

 

 

- 雜項 - 

/?, /help  打印此幫助消息  print this help message

/c  只編譯,不連接  compile only, no link

/W  設置警告等級(默認 n=1)  set warning level (default n=1)

/H  最大化外部名稱長度  max external name length

/J  默認 char 類型是 unsigned  default char type is unsigned

/nologo  取消顯示版權消息  suppress copyright message

/WX  將警告視爲錯誤  treat warnings as errors

/Tc  將文件編譯爲 .c  compile file as .c 

/Yc[file]  建立 .PCH 文件  create .PCH file

/Tp  將文件編譯爲 .cpp  compile file as .cpp 

/Yd  將調試信息放在每一個 .OBJ 中  put debug info in every .OBJ

/TC  將全部文件編譯爲 .c  compile all files as .c 

/TP  將全部文件編譯爲 .cpp  compile all files as .cpp 

/Yu[file]  使用 .PCH 文件  use .PCH file

/V  設置版本字符串  set version string

/YX[file]  自動的 .PCH 文件 automatic .PCH

/w  禁用全部警告  disable all warnings

/Zm  最大內存分配(默認爲 %)  max memory alloc (% of default)

 

 

-連接- 

/MD  與 MSVCRT.LIB 連接  link with MSVCRT.LIB

/MDd  與 MSVCRTD.LIB 調試庫連接  link with MSVCRTD.LIB debug lib

/ML  與 LIBC.LIB 連接  link with LIBC.LIB

/MLd  與 LIBCD.LIB 調試庫連接  link with LIBCD.LIB debug lib

/MT  與 LIBCMT.LIB 連接  link with LIBCMT.LIB 

/MTd  與 LIBCMTD.LIB 調試庫連接  link with LIBCMTD.LIB debug lib

/LD  建立 .DLL  Create .DLL 

/F  設置堆棧大小  set stack size

/LDd  建立 .DLL 調試庫  Create .DLL debug libary

/link  [連接器選項和庫]  [linker options and libraries]

相關文章
相關標籤/搜索