微軟 CL.exe 編譯器選項
阿新 • • 發佈:2019-01-24
本文包含絕對的編譯器選項列表。 有關按字母順序排序的列表,請參見 按字母順序列出的編譯器選項。
優化
/O1 建立小程式碼。
/O2 建立快速程式碼。
/Ob 控制內聯展開。
/Od 禁用優化。
/Og 使用全域性優化。
/Oi 生成內部函式。
/Os 程式碼大小優先。
/Ot 程式碼速度優先。
/Ox 使用最大優化 (/Ob2gity /Gs)。
/Oy 省略幀指標。 (僅限 x86)
程式碼生成
/arch 使用 SSE 或 SSE2 指令生成程式碼。 (僅限 x86)
/bigobj 增加 .obj 檔案中可定址節的數目。
/clr 生成要在公共語言執行時上執行的輸出檔案。
/EH 指定異常處理模型。
/favor 生成為特定 x64 結構或為 AMD64 和 64 位記憶體擴充套件技術 (EM64T) 結構中的特定巨集結構進行了優化的程式碼。
/fp 指定浮點行為。
/G1 針對 Itanium 處理器進行優化。 僅在 IPF 跨平臺編譯器或 IPF 本機編譯器中可用。
/G2 針對 Itanium2 處理器進行優化。 僅在 IPF 跨平臺編譯器或 IPF 本機編譯器中可用。
/Gd 使用呼叫約定 __cdecl。 (僅限 x86)
/Ge 啟用堆疊探測。
/GF 啟用字串池。
/Gh 呼叫掛鉤函式 _penter。
/GH 呼叫掛鉤函式 _pexit。
/GL 啟用全程式優化。
/Gm 啟用最小重新生成。
/GR 啟用執行時型別資訊 (RTTI)。
/Gr 使用呼叫約定 __fastcall。 (僅限 x86)
/Gs 控制堆疊探測。
/GT 支援資料的纖程安全分配通過使用靜態執行緒本地儲存區。
/GX 啟用同步異常處理。
/Gy 啟用函式級連結。
/Gz 使用呼叫約定 __stdcall。 (僅限 x86)
/MD 使用 MSVCRT.lib ,建立多執行緒 DLL。
/MDd 使用 MSVCRTD.lib,建立除錯多執行緒 DLL。
/MT 使用 LIBCMT.lib,建立多執行緒可執行檔案。
/MTd 使用 LIBCMTD.lib,建立除錯多執行緒可執行檔案。
/Qpar 啟用標有 #pragma 迴圈 () 指令迴圈的自動並行化。
/ZW 在 Windows 執行時生成的輸出檔案執行。
/Qfast_transcendentals 生成快速先驗。
/Qimprecise_fwaits 移除 try 塊中的 fwait 命令。
/Qvec-report (Auto-Vectorizer Reporting Level) 啟用自動 vectorization 的報告級別。
輸出檔案
/FA 列表配置檔案的程式集。
/Fa 建立列表檔案的程式集。
/Fd 重新命名程式資料庫檔案。
/Fe 重新命名可執行檔案。
/Fi 指定預處理輸出檔名。
/Fm 建立對映檔案。
/Fo 建立物件檔案。
/Fp 指定預編譯標頭檔案名。
/FR /Fr 生成瀏覽器檔案。
/Fx 插入的程式碼與原始檔合併。
除錯
/GS 檢查緩衝區安全。
/GZ 與 /RTC1 相同
/RTC 啟用執行時錯誤檢查。
/Wp64 檢測 64 位可移植性問題。
/Yd 將完整的除錯資訊放在所有物件檔案中。
/Yl 在建立除錯庫時,插入 PCH 引用。
/Z7 生成與 C 7.0 相容的除錯資訊。
/Zi 生成完整的除錯資訊。
/ZI 將除錯資訊包含在與“編輯並繼續”相容的程式資料庫中。 (僅限 x86)
/homeparams 強制將傳入暫存器的引數寫入其在函式入口的堆疊上的位置。 此編譯器選項僅適用於 x64 編譯器(本機編譯和跨平臺編譯)。
前處理器
/AI 指定在解析傳遞到 #using 指令的檔案引用時搜尋的目錄。
/C 在預處理期間保留註釋。
/D 定義常數和巨集。
/E 將前處理器輸出複製到標準輸出。
/EP 將前處理器輸出複製到標準輸出。
/FI 預處理指定的包含檔案。
/FU 強制使用檔名,就象它已被傳遞 #using 指令。
/I 在目錄中搜索包含檔案。
/P 將前處理器輸出寫入檔案。
/U 移除預定義巨集。
/u 移除所有的預定義巨集。
/X 忽略標準包含目錄。
語言
/openmp 在原始碼中啟用 #pragma omp。
/vd 取消或啟用隱藏的 vtordisp 選件類成員。
/vmb 對指向成員的指標使用最佳的基。
/vmg 對指向成員的指標使用完全一般性。
/vmm 宣告多重繼承。
/vms 宣告單一繼承。
/vmv 宣告虛擬繼承。
/volatile 選擇 volatile 關鍵字如何解釋。
/Za 禁用語言擴充套件。
/Zc 指定在 /Ze 下的標準行為。
/Ze 啟用語言擴充套件。
/Zg 生成函式原型。
/Zl 從 .obj 檔案中移除預設庫名值。
/Zp n 封裝結構成員。
/Zs 只檢查語法。
連結
/F 設定堆疊大小。
/LD 建立動態連結庫。
/LDd 建立除錯動態連結庫。
/LN 建立 MSIL 模組。
/link 將指定的選項傳遞給 LINK。
/MD 使用 MSVCRT.lib,編譯以建立多執行緒 DLL。
/MDd 使用 MSVCRTD.lib,編譯以建立除錯多執行緒 DLL。
/MT 使用 LIBCMT.lib,編譯以建立多執行緒可執行檔案。
/MTd 使用 LIBCMTD.lib,編譯以建立除錯多執行緒可執行檔案。
預編譯頭
/Y- 忽略當前生成中的所有其他預編譯頭編譯器選項。
/Yc 建立預編譯標頭檔案。
/Yd 將完整的除錯資訊放在所有物件檔案中。
/Yu 在生成期間使用預編譯標頭檔案。
雜項
/? 列出編譯器選項。
@ 指定響應檔案。
/analyze 啟用程式碼分析。
/c 編譯但不連結。
/doc 將文件註釋處理到一個 XML 檔案中。
/errorReport 可以提供內部編譯器錯誤 (ICE) 資訊直接對 Visual C++ 團隊。
/FC 顯示原始碼檔案的完整路徑傳遞給診斷文字的 cl.exe。
/H 限制外部(公共)名稱的長度。
/HELP 列出編譯器選項。
/hotpatch 建立可熱修補的映像。
/J 更改預設的 char 型別。
/kernel 編譯器和連結器將建立在核心中執行的二進位制檔案。
/MP 同時生成多個原始檔。
/nologo 取消顯示登入版權標誌。
/showIncludes 顯示所有的列表在編譯時包含檔案。
/Tc /TC 指定 C 原始檔。
/Tp /TP 指定 C++ 原始檔。
/V 設定版本字串。
/Wall 啟用所有警告,包括預設情況下禁用的警告。
/W 設定警告等級。
/w 禁用所有警告。
/WL 在從命令列編譯 C++ 原始碼時啟用錯誤訊息和警告訊息的單行診斷。
/Zm 指定預編譯頭記憶體分配限制。
QIfist 當需要從浮點型轉換為整型時,取消呼叫 Helper 函式 _ftol。 (僅限 x86)
/QIPF_B 不生成會導致 B CPU 單步執行勘誤表中所載異常結果的指令序列。 (僅限 IPF)
/QIPF_C 不生成會導致 B CPU 單步執行勘誤表中所載異常結果的指令序列。 (僅限 IPF)
/QIPF_fr32 不使用高 96 位浮點暫存器。 (僅限 IPF)
/QIPF_noPIC 生成具有位置相關程式碼的映像(僅限 IPF)。
/QIPF_restrict_plabels 為在執行時不建立函式的程式增強效能。 (僅限 IPF)