CL 命令列使用下列文法:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
下表說明CL 命令的輸入項意義
option 一個或多個 CL 選項。請注意,所有選項都應用於所有指定的源檔案。選項是由一個正斜杠 (/) 或一個短劃線 (–) 指定的。如果某個選項帶有參數,則該選項的說明指定在選項和參數之間是否允許有空格。選項名(/HELP 選項除外)區分大小寫。有關更多資訊,請參閱 CL 選項的順序。
file 一個或多個源檔案、.obj 檔案或庫的名稱。CL 編譯源檔案並將 .obj 檔案和庫的名稱傳遞給連結器。有關更多資訊,請參閱 CL 檔案名稱文法。
lib 一個或多個庫名。CL 將這些名稱傳遞給連結器。
command-file 包含多個選項和檔案名稱的檔案。有關更多資訊,請參閱 CL 命令檔案。
link-opt 一個或多個連結器選項。CL 將這些選項傳遞給連結器。
您可以指定任意數目的選項、檔案名稱和庫名,條件是命令列上的字元數不超過 1024,該限制是作業系統指定的。
編譯器
注意,所有編譯器選項都區分大小寫。
若要編譯但不連結,請使用 /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 檔案中移除預設庫名
/Zpn 封裝結構成員
/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 設定編譯器的記憶體配置限制
===================================
LINK 用法如下:
/ALIGN 指定每一節的對齊
/ALIGN 選項指定程式線性地址空間中每一節的對齊。number 參數以位元組為單位,並且必須是2 的冪。預設值是 4K (4096)。如果對齊產生
無效的映像,則連結器發出警告。除非正
在編寫諸如裝置驅動程式的應用程式,否則應不需要修改對齊。
/DLL 產生 DLL
/DRIVER 建立 Windows NT 核心模式驅動程式
/EXETYPE 產生虛擬設備驅動程式
/EXETYPE:DYNAMIC 建立動態載入的虛擬設備驅動程式。
/EXETYPE:DEV386 建立靜態載入的虛擬設備驅動程式。這是 /EXETYPE 的預設值
/INCREMENTAL 控制增量連結
/LARGEADDRESSAWARE 通知編譯器應用程式支援大於 2 GB 的地址
/LIBPATH 允許使用者重寫環境庫路徑
/LIBPATH:"e:\VC\LIB" /LIBPATH:"e:\DX\LIB"
/MACHINE 指定目標平台
` /MACHINE:{AM33|ARM|EBC|IA64|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|
MIPSR41XX|SH3|SH3DSP|SH4|SH5|THUMB|X86| X64/*8.0版本*/}
/MACHINE:X86
/NOENTRY 建立純資源 DLL
建立純資源 DLL 時要求 /NOENTRY 選項。
/OPT 控制 LINK 最佳化
如果產生僅運行於 Windows NT 或 Windows 2000 上的組件,則應使用 /OPT:NOWIN98。
/SUBSYSTEM: 指定子系統
{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|
WINDOWSCE}[,#[.##]]
/OUT 指定輸出檔案名
/OUT:Hello.exe