cl.exe所在的資料夾裡面有乙個批處理叫做
vsvar32.bat
首先執行它一次,你就可以用cl.exe來編譯你的**了。
(在vs2005裡面未發現該檔案,懷疑因該是上級目錄的vcvarsall.bat,但是不執行該檔案同樣可進行命令列編譯。)
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 選項的順序。
lib 乙個或多個庫名。cl 將這些名稱傳遞給鏈結器。
command-file 包含多個選項和檔名的檔案。有關更多資訊,請參閱 cl 命令檔案。
link-opt 乙個或多個鏈結器選項。cl 將這些選項傳遞給鏈結器。
您可以指定任意數目的選項、檔名和庫名,條件是命令列上的字元數不超過 1024,該限制是作業系統指定的。
cl 命令檔案請參見
設定編譯器選項 | 編譯器選項
命令檔案是乙個文字檔案,它包含您另外在命令列上鍵入或使用 cl 環境變數指定的選項和檔名。cl 接受在 cl 環境變數中或命令列上用作引數的編譯器命令檔案。與命令列或 cl 環境變數不同,命令檔案允許使用多行選項和檔名。
命 令檔案中的選項和檔名將根據 cl 環境變數中或命令列上的命令檔名的位置被進行處理。但是,如果 /link 選項出現在命令檔案中,則該行其餘部分的所有選項將被傳遞給鏈結器。命令檔案的後面幾行中的選項和命令列上命令檔案呼叫之後的選項仍被作為編譯器選項接 受。
命令檔案一定不能包含 cl 命令。每個選項必須在同一行上開始和結束;不能使用反斜槓 (") 跨行組合乙個選項。
命令檔案用乙個 @ 符後接乙個檔名指定;該檔名可指定絕對路徑或相對路徑。
VC 中CTime類Format引數詳解
ctime類通過format可以格式化輸出日期時間資訊,通過控制format的引數我們可以實現各種各樣的日期時間格式輸出,要想隨心所欲的控制輸出的格式,就需要搞清楚各個引數的意義,下面通過例項來說明各個format引數的意義。假設ctime物件當前的日期時間為 2011 4 17 14 32 18 ...
VC 中CTime類Format引數詳解
ctime類通過format可以格式化輸出日期時間資訊,通過控制format的引數我們可以實現各種各樣的日期時間格式輸出,要想隨心所欲的控制輸出的格式,就需要搞清楚各個引數的意義,下面通過例項來說明各個format引數的意義。假設ctime物件當前的日期時間為 2011 4 17 14 32 18 ...
Linux中mpstat命令引數詳解
mpstat是 multiprocessor statistics的縮寫,是實時系統監控工具。其報告與cpu的一些統計資訊,這些資訊存放在 proc stat檔案中。在多cpu系統裡,其不但能檢視所有cpu的平均狀況資訊,而且能夠檢視特定cpu的資訊。mpstat的語法如下 mpstat p int...