【Tools/VS】 VS 編譯選項


DATE: 2018.12.9


1、參考

https://blog.csdn.net/whatday/article/details/82779729

2、Visual Studio編譯選項

C/C++ 編譯器選項

優化

/O1 最小化空間 /O2 最大化速度

/Ob 內聯擴展(默認 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 命名可執行文件
/Fm[file] 命名映射文件 /Fo 命名對象文件
/Fp 命名預編譯頭文件 /Fr[file] 命名源瀏覽器文件
/FR[file] 命名擴展 .SBR 文件 /Fi[file] 命名預處理的文件
/doc[file] 處理 XML 文檔注釋,並可選擇命名 .xdc 文件

預處理器
/AI<dir> 添加到程序集搜索路徑
/FU<file> 強制使用程序集/模塊
/C 不抽出注釋 /D{=|#}<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 指向成員的指針類型

/Zc:arg1[,arg2] C++ 語言合規性,這里的參數可以是:

forScope[-] - 對范圍規則強制使用標准 C++

wchar_t[-] - wchar_t 是本機類型,不是 typedef

auto[-] - 對 auto 強制使用新的標准 C++ 含義

trigraphs[-] - 啟用三元祖(默認為關閉)

/ZI 啟用“編輯並繼續”調試信息 /openmp 啟用 OpenMP 2.0 語言擴展

雜項

@<file> 選項響應文件 /?, /help 打印此幫助消息

/bigobj 生成擴展的對象格式 /c 只編譯,不鏈接

/errorReport:option 將內部編譯器錯誤報告給 Microsoft

none - 不發送報告                       prompt - 提示立即發送報告

queue - 在下一次管理員登錄時,提示發送報告(默認)

send - 自動發送報告                 /FC 診斷中使用完整路徑名

/H 最大外部名稱長度 /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 設置堆棧大小
/link [鏈接器選項和庫] /MD 與 MSVCRT.LIB 鏈接
/MT 與 LIBCMT.LIB 鏈接 /MDd 與 MSVCRTD.LIB 調試庫鏈接
/MTd 與 LIBCMTD.LIB 調試庫鏈接

代碼分析
/analyze[:WX-] 啟用代碼分析

WX- - 即使調用了 /WX,也不應將代碼分析警告視為錯誤

THE END!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM