VC命令行編譯參數介紹
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將這些選項傳遞給鏈接器。