cl.exe

cl.exe

cl.exe是Microsoft C/C++編譯器

基本介紹

  • 中文名:cl.exe
  • 外文名:CL.EXE
  • 最小化空間:/O1 
  • 最大化速度:/O2
  • 全局最佳化:/Og
  • 選項:C/C++ 編譯器
最佳化,輸出檔案,預處理器,語言,雜項,連結,最佳化2,

最佳化

/O1 最小化空間 /Op[-] 改善浮點數一致性
/O2 最大化速度 /Os 優選代碼空間
/Oa 假設沒有別名 /Ot 優選代碼速度
cl.exe
/Ob<n> 內聯展開(默認 n=0) /Ow 假設交叉函式別名
/Od 禁用最佳化(默認值) /Ox 最大化選項。(/Ogityb2 /Gs)
/Og 啟用全局最佳化 /Oy[-] 啟用框架指針省略
/Oi 啟用內部函式
/G3 為 80386 進行最佳化 /Gh 啟用 _penter 函式調用
/G4 為 80486 進行最佳化 /GH 啟用 _pexit 函式調用
/G5 為 Pentium 進行最佳化 /GR[-] 啟用 C++ RTTI
/G6 對 PPro、P-II、P-III 進行最佳化 /GX[-] 啟用 C++ EH (與 /EHsc 相同)
/G7 對 Pentium 4 或 Athlon 進行最佳化 /EHs 啟用 C++ EH (沒有 SEH 異常)
/GB 為混合模型進行最佳化(默認) /EHa 啟用 C++ EH(w/ SEH 異常)
/Gd __cdecl 調用約定 /EHc extern "C" 默認為 nothrow
/Gr __fastcall 調用約定 /GT 生成纖維安全 TLS 訪問
/Gz __stdcall 調用約定 /Gm[-] 啟用最小重新生成
/GA 為 Windows 應用程式進行最佳化 /GL[-] 啟用連結時代碼生成
/Gf 啟用字元串池 /QIfdiv[-] 啟用 Pentium FDIV 修復
/GF 啟用唯讀字元串池 /QI0f[-] 啟用 Pentium 0x0f 修復
/Gy 分隔連結器函式 /QIfist[-] 使用 FIST 而不是 ftol()
/GZ 啟用堆疊檢查(/RTCs) /RTC1 啟用快速檢查(/RTCsu)
/Ge 對所有函式強制堆疊檢查 /RTCc 轉換為較小的類型檢查
/Gs[num] 控制堆疊檢查調用 /RTCs 堆疊幀運行時檢查
/GS 啟用安全檢查 /RTCu 未初始化的本地用法檢查
/clr[:noAssembly] 為公共語言運行庫編譯
noAssembly - 不產生程式集
/arch:<SSE|SSE2> CPU 結構的最低要求,以下內容之一:
SSE - 啟用支持 SSE 的 CPU 可用的指令
SSE2 - 啟用支持 SSE2 的 CPU 可用的指令

輸出檔案

/Fa[file] 命名程式集列表檔案 /Fo<file> 命名對象檔案
cl.exe
/FA[sc] 配置程式集列表 /Fp<file> 命名預編譯頭檔案
/Fd[file] 命名 .PDB 檔案 /Fr[file] 命名源瀏覽器檔案
/Fe<file> 命名執行檔 /FR[file] 命名擴展 .SBR 檔案
/Fm[file] 命名映射檔案

預處理器

/AI<dir> 添加到程式集搜尋路徑 /Fx 將插入的代碼合併到檔案
/FU<file> 強制使用程式集/模組 /FI<file> 命名強制包含檔案
/C 不抽出注釋 /U<name> 移除預定義宏
/D<name>{=|#}<text> 定義宏 /u 移除所有預定義宏
/E 預處理到 stdout /I<dir> 添加到包含搜尋路徑
/EP 預處理到 stdout,沒有 #line /X 忽略“標準位置”
/P 預處理到檔案

語言

/Zi 啟用調試信息 /Ze 啟用擴展(默認)
/ZI 啟用“編輯並繼續”調試信息 /Zl 省略 .OBJ 中的默認庫名
/Z7 啟用舊式調試信息 /Zg 生成函式原型
/Zd 僅有行號調試信息 /Zs 只進行語法檢查
/Zp[n] 在 n 位元組邊界上包裝結構 /vd{0|1} 禁用/啟用 vtordisp
/Za 禁用擴展(暗指 /Op) /vm<x> 指向成員的指針類型
/Zc:arg1[,arg2] C++ 語言一致性,這裡的參數可以是:
forScope - 對範圍規則強制使用標準 C++
wchar_t - wchar_t 是本機類型,不是 typedef

雜項

@<file> 選項回響檔案 /wo<n> 發出一次警告 n
/?, /help 列印此幫助訊息 /w<l><n> 為 n 設定警告等級 1-4
/c 只編譯,不連結 /W<n> 設定警告等級(默認 n=1)
/H<num> 最大外部名稱長度 /Wall 啟用所有警告
/J 默認 char 類型是 unsigned /Wp64 啟用 64 位連線埠定位警告
/nologo 取消顯示著作權訊息 /WX 將警告視為錯誤
/showIncludes 顯示包含檔案名稱 /WL 啟用單行診斷
/Tc<source file> 將檔案編譯為 .c /Yc[file] 創建 .PCH 檔案
/Tp<source file> 將檔案編譯為 .cpp /Yd 將調試信息放在每個 .OBJ 中
/TC 將所有檔案編譯為 .c /Yl[sym] 為調試庫插入 .PCH 引用
/TP 將所有檔案編譯為 .cpp /Yu[file] 使用 .PCH 檔案
/V<string> 設定版本字元串 /YX[file] 自動 .PCH
/w 禁用所有警告 /Y- 禁用所有 PCH 選項
/wd<n> 禁用警告 n /Zm<n> 最大記憶體分配(默認為 %)
/we<n> 將警告 n 視為錯誤

連結

/MD 與 MSVCRT.LIB 連結 /MDd 與 MSVCRTD.LIB 調試庫連結
/ML 與 LIBC.LIB 連結 /MLd 與 LIBCD.LIB 調試庫連結
/MT 與 LIBCMT.LIB 連結 /MTd 與 LIBCMTD.LIB 調試庫連結
/LD 創建 .DLL /F<num> 設定堆疊大小
/LDd 創建 .DLL 調試庫 /link [連結器選項和庫]
Microsoft Visual Studio 2010 cl.exe 編譯器幫助
cl.exe /? >>cl.txt
C/C++ 編譯器選項

最佳化2

/O1 最小化空間 /O2 最大化速度
/Ob<n> 內聯擴展(默認 n=0) /Od 禁用最佳化(默認)
/Og 啟用全局最佳化 /Oi[-] 啟用內部函式
/Os 優選代碼空間 /Ot 優選代碼速度
/Ox 最大化最佳化 /Oy[-] 啟用幀指針省略
-代碼生成-
/GF 啟用唯讀字元串池 /Gm[-] 啟用最小重新生成
/Gy[-] 分隔連結器函式 /GS[-] 啟用安全檢查
/GR[-] 啟用 C++ RTTI /GX[-] 啟用 C++ EH (與 /EHsc 相同)
/EHs 啟用 C++ EH (沒有 SEH 異常) /EHa 啟用 C++ EH (w/ SEH 異常)
/EHc 外部“C”默認為 nothrow
/fp:<except[-]|fast|precise|strict> 選擇浮點模式:
except[-] - 在生成代碼時考慮浮點異常
fast -“fast”浮點模式;結果可預測性比較低
precise -“precise”浮點模式;結果可預測
strict -“strict” 浮點模式(意味著 /fp:except)
即使使用 /fp:except,/Qfast_transcendentals 也生成內聯內部 FP
/GL[-] 啟用連結時代碼生成 /GA 為 Windows 應用程式進行最佳化
/Ge 對所有函式強制堆疊檢查 /Gs[num] 控制堆疊檢查調用
/Gh 啟用 _penter 函式調用 /GH 啟用 _pexit 函式調用
/GT 生成纖程安全 TLS 訪問 /RTC1 啟用快速檢查(/RTCsu)
/RTCc 轉換為較小的類型檢查 /RTCs 堆疊幀運行時檢查
/RTCu 未初始化的局部用法檢查
/clr[:option] 為公共語言運行時編譯,其中 option 是:
pure - 生成只包含 IL 的輸出檔案(沒有本機可執行代碼)
safe - 生成只包含 IL 的可驗證輸出檔案
oldSyntax - 接受 Visual C++ 2002/2003 的託管擴展語法
initialAppDomain - 啟用 Visual C++ 2002 的初始 AppDomain 行為
noAssembly - 不產生程式集 /Gd __cdecl 調用約定
/Gr __fastcall 調用約定 /Gz __stdcall 調用約定
/GZ 啟用堆疊檢查(/RTCs) /QIfist[-] 使用 FIST 而不是 ftol()
/hotpatch 確保可熱修補映像的函式填充
/arch:<SSE|SSE2|AVX> CPU 架構的最低要求,以下選項之一:
SSE - 啟用支持 SSE 的 CPU 可用的指令
SSE2 - 啟用支持 SSE2 的 CPU 可用的指令
AVX - 支持使用 Intel(R) 高級矢量擴展指令
/Qimprecise_fwaits 僅在“try”邊界而不是“try”內部生成 FWAITs
/Qsafe_fp_loads 生成安全 FP 負載
-輸出檔案-
/Fa[file] 命名程式集列表檔案 /FA[scu] 配置程式集列表
/Fd[file] 命名 .PDB 檔案 /Fe<file> 命名執行檔
/Fm[file] 命名映射檔案 /Fo<file> 命名對象檔案
/Fp<file> 命名預編譯頭檔案 /Fr[file] 命名源瀏覽器檔案
/FR[file] 命名擴展 .SBR 檔案 /Fi[file] 命名預處理的檔案
/doc[file] 處理 XML 文檔注釋,並可選擇命名 .xdc 檔案
-預處理器-
/AI<dir> 添加到程式集搜尋路徑 /FU<file> 強制使用程式集/模組
/C 不抽出注釋 /D<name>{=|#}<text> 定義宏
/E 預處理到 stdout /EP 預處理到 stdout,無行號
/P 預處理到檔案 /Fx 將插入的代碼合併到檔案中
/FI<file> 命名強制包含檔案 /U<name> 移除預定義的宏
/u 移除所有預定義的宏 /I<dir> 添加到包含搜尋路徑
/X 忽略“標準位置”
-語言-
/Zi 啟用調試信息 /Z7 啟用舊式調試信息
/Zp[n] 在 n 位元組邊界上包裝結構 /Za 禁用擴展
/Ze 啟用擴展(默認) /Zl 省略 .OBJ 中的默認庫名
/Zg 生成函式原型 /Zs 只進行語法檢查
/vd{0|1|2} 禁用/啟用 vtordisp /vm<x> 指向成員的指針類型
/Zc:arg1[,arg2] C++ 語言合規性,這裡的參數可以是:
forScope[-] - 對範圍規則強制使用標準 C++
wchar_t[-] - wchar_t 是本機類型,不是 typedef
auto[-] - 對 auto 強制使用新的標準 C++ 含義
trigraphs[-] - 啟用三元祖(默認為關閉)
/ZI 啟用“編輯並繼續”調試信息 /openmp 啟用 OpenMP 2.0 語言擴展
- 雜項 <A href="mailto:-@-
@<file> 選項回響檔案 /?, /help 列印此幫助訊息
/bigobj 生成擴展的對象格式 /c 只編譯,不連結
/errorReport:option 將內部編譯器錯誤報告給 Microsoft
none - 不傳送報告 prompt - 提示立即傳送報告
queue - 在下一次管理員登錄時,提示傳送報告(默認)
send - 自動傳送報告 /FC 診斷中使用完整路徑名
/H<num> 最大外部名稱長度 /J 默認 char 類型是 unsigned
/MP[n] 最多使用“n”個進程進行編譯 /nologo 取消顯示版權資訊
/showIncludes 顯示包含檔案名稱 /Tc<source file> 將檔案編譯為 .c
/Tp<source file> 將檔案編譯為 .cpp /TC 將所有檔案編譯為 .c
/TP 將所有檔案編譯為 .cpp /V<string> 設定版本字元串
/w 禁用所有警告 /wd<n> 禁用警告 n
/we<n> 將警告 n 視為錯誤 /wo<n> 發出一次警告 n
/w<l><n> 為 n 設定警告等級 1-4 /W<n> 設定警告等級(默認 n=1)
/Wall 啟用所有警告 /WL 啟用單行診斷
/WX 將警告視為錯誤 /Yc[file] 創建 .PCH 檔案
/Yd 將調試信息放在每個 .OBJ 中 /Yl[sym] 為調試庫插入 .PCH 引用
/Yu[file] 使用 .PCH 檔案 /Y- 禁用所有 PCH 選項
/Zm<n> 最大記憶體分配(默認為 %) /Wp64 啟用 64 位連線埠定位警告
-連結-
/LD 創建 .DLL /LDd 創建 .DLL 調試庫
/LN 創建 .netmodule /F<num> 設定堆疊大小
/link [連結器選項和庫] /MD 與 MSVCRT.LIB 連結
/MT 與 LIBCMT.LIB 連結 /MDd 與 MSVCRTD.LIB 調試庫連結
/MTd 與 LIBCMTD.LIB 調試庫連結
-代碼分析-
/analyze[:WX-] 啟用代碼分析
WX- - 即使調用了 /WX,也不應將代碼分析警告視為錯誤

相關詞條

熱門詞條

聯絡我們