VC命令行编译参数介绍
From: http://blog.csdn.net/zhangxinrun/article/details/5797122
CL.exe是控制Microsoft C和C++編譯器與鏈接器的32位工具。編譯器產生通用對象文件格式(COFF)對象(.obj)文件。鏈接器產生可執行文件(.exe)或動態鏈接庫文件(DLL)。
注意,所有編譯器選項都區分大小寫。???
???
若要編譯但不鏈接,請使用/c。???
???
使用NMAKE生成輸出文件。??
???
使用BSCMAKE支持類瀏覽。??
???
以下是一個完整的編譯器選項分類列表。??
???
優化??
???
選項?? 作用????
/O1?? 創建小代碼????
/O2?? 創建快速代碼????
/Oa?? 假設沒有別名????
/Ob?? 控制內聯展開????
/Od?? 禁用優化????
/Og?? 使用全局優化????
/Oi?? 生成內部函數????
/Op?? 改善浮點數一致性????
/Os?? 代碼大小優先????
/Ot?? 代碼速度優先????
/Ow?? 假定在函數調用中使用別名????
/Ox?? 使用最大優化(/Ob1gity /Gs)????
/Oy?? 省略框架指針????
???
代碼生成??
???
選項?? 作用????
/clr 啟用C++的托管擴展并產生在公共語言運行庫上運行的輸出文件????
/EH?? 指定異常處理模型????
/G3?? 優化代碼以優選386處理器。在Visual C++ 5.0中已經停用,編譯器將忽略此選項????
/G4?? 優化代碼以優選486處理器。在Visual C++ 5.0中已經停用,編譯器將忽略此選項????
/G5?? 優化代碼以優選Pentium????
/GB?? 與/G6等效;將_M_IX86的值設置為600????
/Gd?? 使用__cdecl調用約定????
/Ge?? 激活堆棧探測????
/GF??
/GF?? 啟用字符串池????
/GH?? 調用掛鉤函數_penter????
/GH?? 調用掛鉤函數_pexit????
/GL?? 啟用全程序優化????
/Gm?? 啟用最小重新生成????
/Gr?? 啟用運行時類型信息(RTTI)????
/Gr?? 使用__fastcall調用約定????
/GS?? 控制堆棧探測????
/GT?? 支持使用靜態線程本地存儲區分配的數據的纖程安全????
/GX?? 啟用同步異常處理????
/Gy?? 啟用函數級鏈接????
/GZ?? 使用__stdcall調用約定????
/MD?? 使用MSVCRT.lib創建多線程DLL????
/MDd 使用MSVCRTD.lib創建調試多線程DLL????
/ML?? 使用LIBC.lib創建單線程可執行文件????
/MLd 使用LIBCD.lib創建調試單線程可執行文件????
/MT?? 使用LIBCMT.lib創建多線程可執行文件????
/MTd 使用LIBCMTD.lib創建調試多線程可執行文件????
???
輸出文件??
???
選項?? 作用????
/FA??
/FA?? 創建列表文件
??????? 設置列表文件名????
/Fd?? 重命名程序數據庫文件????
/Fe?? 重命名可執行文件????
/Fm?? 創建映射文件????
/Fo?? 創建對象文件????
/Fp?? 指定預編譯頭文件名????
/FR??
/FR?? 生成瀏覽器文件????
/Fx?? 將插入的代碼與源文件合并????
???
調試??
???
選項?? 作用????
/GS?? 緩沖區安全檢查????
/GZ?? 與/RTC1相同????
/RTC 啟用運行時錯誤檢查????
/Wp64 檢測64位可移植性問題????
/Yd?? 將完整的調試信息放在所有對象文件中????
/Yl?? 創建調試庫時插入PCH引用????
/Z7?? 生成與C 7.0兼容的調試信息????
/Zd?? 生成行號????
/Zi?? 生成完整的調試信息????
???
預處理器??
???
選項?? 作用????
/AI 指定在解析傳遞到#using指令的文件引用時搜索的目錄????
/c?? 在預處理期間保留注釋????
/D?? 定義常數和宏????
/E?? 將預處理器輸出復制到標準輸出????
/EP 將預處理器輸出復制到標準輸出????
/Fl 預處理指定的包含文件????
/FU 強制使用文件名,就像它已被傳遞到#using指令一樣????
/I?? 在目錄中搜索包含文件????
/P?? 將預處理器輸出寫入文件????
/U?? 移除預定義宏????
/U?? 移除所有的預定義宏????
/X?? 忽略標準包含目錄????
/ZI 將調試信息包含在與“編輯并繼續”兼容的程序數據庫中????
???
語言??
???
選項?? 作用????
/noBool?? 取消C++ bool、true和false關鍵字????
/vd?? 取消或啟用隱藏的vtordisp類成員????
/vmb 對指向成員的指針使用最佳的基????
/vmg 對指向成員的指針使用完全一般性????
/vmm 聲明多重繼承????
/vms 聲明單一繼承????
/vmv 聲明虛擬繼承????
/Za?? 禁用語言擴展????
/Zc?? 在/Ze下指定標準行為????
/Ze?? 啟用語言擴展????
/Zg?? 生成函數原型????
/Zl?? 從.obj文件中移除默認庫名????
/Zp?? n?? 封裝結構成員????
/Zs?? 只檢查語法????
???
鏈接??
???
選項?? 作用????
/F?? 設置堆棧大小????
/LD?? 創建動態鏈接庫????
/LDd?? 創建調試動態鏈接庫????
/link?? 將指定的選項傳遞給LINK????
/MD?? 使用MSVCRT.lib編譯以創建多線程DLL????
/MDd?? 使用MSVCRTD.lib編譯以創建調試多線程DLL????
/ML?? 使用LIBC.lib編譯以創建單線程可執行文件????
/MLd?? 使用LIBCD.lib編譯以創建調試單線程可執行文件????
/MT?? 使用LIBCMT.lib編譯以創建多線程可執行文件????
/MTd?? 使用LIBCMTD.lib編譯以創建調試多線程可執行文件????
???
預編譯頭??
???
選項?? 作用????
/Y-?? 忽略當前生成中的所有其他預編譯頭編譯器選項????
/Yc?? 創建預編譯頭文件????
/Yd?? 將完整的調試信息放在所有對象文件中????
/Yu?? 在生成期間使用預編譯頭文件????
/YX?? 自動處理預編譯頭????
???
雜項??
???
選項?? 作用????
@?? 指定響應文件????
/??? 列出編譯器選項????
/c?? 編譯但不鏈接????
/H?? 限制外部(公共)名稱的長度????
/HELP?? 列出編譯器選項????
/J?? 更改默認的char類型????
/NOLOGO?? 取消顯示登錄版權標志????
/QI0f?? 確保Pentium 0F指令沒有問題????
/QIfdiv?? FDIV、FPREM、FPTAN和FPATAN指令有缺陷的Intel Pentium微處理器的變通方法????
QIfist?? 當需要從浮點類型轉換為整型時取消Helper函數_ftol的調用????
/showIncludes?? 在編譯期間顯示所有包含文件的列表????
/Tc??
/Tc?? 指定C源文件????
/Tp??
/Tp?? 指定C++源文件????
/V?? 設置版本字符串????
/w?? 設置警告等級????
/w?? 禁用所有警告????
/Wall?? 啟用所有警告,包括默認情況下禁用的警告????
/WL?? 在從命令行編譯C++源代碼時啟用錯誤信息和警告消息的單行診斷????
/Zm?? 設置編譯器的內存分配限制????
CL?? 命令行使用下列語法:??
???
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]??
???
下面說明CL命令的輸入項意義????
???
option?? 一個或多個CL選項。請注意,所有選項都應用于所有指定的源文件。選項是由一個正斜杠(/)或一個短劃線(–)指定的。如果某個選項帶有參數,則該選項的說明指定在選項和參數之間是否允許有空格。選項名(/HELP選項除外)區分大小寫。有關更多信息,請參閱CL選項的順序。??
???
file?? 一個或多個源文件、.obj文件或庫的名稱。CL編譯源文件并將.obj文件和庫的名稱傳遞給鏈接器。有關更多信息,請參閱CL文件名語法。
???
lib?? 一個或多個庫名。CL將這些名稱傳遞給鏈接器。???
您可以指定任意數目的選項、文件名和庫名,條件是命令行上的字符數不超過1024,該限制是操作系統指定的。???
???
command-file?? 包含多個選項和文件名的文件。有關更多信息,請參閱CL命令文件。????
???
link-opt?? 一個或多個鏈接器選項。CL將這些選項傳遞給鏈接器。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的VC命令行编译参数介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一篇博文让C盘瘦身!清理内存!
- 下一篇: Jedis 设置key的超时时间