在 Visual Studio(VS)中按下 F5 或選擇「建置」菜單,IDE 會自動完成編譯、鏈接、執行等一系列動作。但了解命令列編譯流程,有助於理解建置系統本質、排查疑難雜症、編寫自動化腳本,甚至在無圖形介面的伺服器上構建專案。本文以 VS2010 為例,詳述環境配置、核心工具與實戰編譯步驟。
VS 安裝目錄下 VC\bin 包含核心建置工具:
.c/.cpp 產生 .obj)。.obj 與庫生成 .exe/.dll)。.lib)。cl.exe 內部會自動調用 link.exe、lib.exe,因此直接呼叫 cl 即可完成完整建置。
雖官方提供 vcvars32.bat 設定環境,但實測常報錯。建議手動配置用戶環境變數(假設 VS2010 安裝於 C:\Program Files (x86)\Microsoft Visual Studio 10.0):
| 變數名 | 值 |
|---|---|
| VS2010_DIR | C:\Program Files (x86)\Microsoft Visual Studio 10.0 |
| WIN_SDK | C:\Program Files (x86)\Microsoft SDKs |
| Path | %VS2010_DIR%\VC\bin;%VS2010_DIR%\Common7\IDE;(原有路徑) |
| INCLUDE | %VS2010_DIR%\VC\include;%WIN_SDK%\Windows 7.0A\Include; |
| LIB | %VS2010_DIR%\VC\lib;%WIN_SDK%\Windows 7.0A\Lib; |
配置後重啟命令提示字元,輸入 cl 若顯示版本資訊即成功。
建立 D:\CppWorkspace\CommandTest\HelloWorld.cpp:
#include <iostream>
#include <stdio.h>
int main() {
std::cout << "This is a native C++ program." << std::endl;
printf("printf: Hello World");
return 0;
}
在該目錄下執行:
cl HelloWorld.cpp
即可生成 HelloWorld.exe。cl 內部自動完成編譯與鏈接。
執行 cl -help 可見完整列表,常用優化選項:
| 選項 | 作用 |
|---|---|
| /O1 | 生成精簡代碼(體積優先) |
| /O2 | 生成高速代碼(速度優先) |
| /Od | 禁用優化(便於偵錯) |
| /Oi | 生成內部函數(內聯標準庫函數) |
| /Wall | 開啟所有警告 |
| /EHsc | 啟用 C++ 異常處理模型 |
| /MD /MT | 指定運行庫鏈接方式(動態/靜態) |
cl /c HelloWorld.cpp // 僅編譯,產生 HelloWorld.obj
link HelloWorld.obj // 僅鏈接,產生 HelloWorld.exe
分離步驟有利於大型專案的增量建置與並行編譯。
掌握命令列編譯,不僅能脫離 IDE 依賴,更能深入理解 C/C++ 建置流程:預處理 → 編譯 → 組裝 → 鏈接。配合 nmake 或 CMake 等構建系統,即可構建專業級自動化建置流水線。