從命令列使用 Microsoft C++ 建置工具

你可以使用Visual Studio內建的工具,在命令列上建立C和C++應用程式。 Microsoft C++(MSVC)建置工具也可作為獨立套件下載。 如果你不打算用 Visual Studio IDE,其實不需要安裝它。

注意

本文說明如何設定環境,以使用個別編譯程式、連結器、圖書館員和其他基本工具。 Visual Studio 的原生專案建置系統(基於 MSBuild)並不使用本文所述的環境。 如需如何從命令行使用 MSBuild 的詳細資訊,請參閱 命令行上的 MSBuild - C++

下載並安裝工具

如果你安裝了 Visual Studio 和 C++ 工作負載,你就擁有所有命令列工具。 關於如何安裝 C++ 和 Visual Studio,請參見 Visual Studio 中的 Install C++ 支援。 如果你只想要命令列工具組,請下載 Build Tools for Visual Studio。 在下載頁面,展開 Tools for Visual Studio 區塊,找到 Build Tools 下載。 當你執行下載的執行檔時,它會更新並執行 Visual Studio 安裝程式。 若要只安裝C++開發所需的工具,請選取具有C++工作負載的桌面開發。 您可以選擇可選用的函式庫和工具組,將其包含在 [安裝詳細資料] 中。 若要使用 Visual Studio 2015、2017 或 2019 工具組編譯程式碼,請選擇可選的 MSVC v140、v141 或 v142 建置工具。 當您滿意您的選擇時,請選擇 [ 安裝]。

如果你安裝了 Visual Studio 和 C++ 工作負載,你就擁有所有命令列工具。 關於如何安裝 C++ 和 Visual Studio,請參見 Visual Studio 中的 Install C++ 支援。 如果你只想要命令列工具組,請下載 Build Tools for Visual Studio 2017。 當你執行下載的執行檔時,它會更新並執行 Visual Studio 安裝程式。 若要只安裝C++開發所需的工具,請選取具有C++工作負載的桌面開發。 您可以選擇將可選的函式庫和工具組包含在 [安裝詳細資料] 中。 若要使用 Visual Studio 2015 工具組編譯程式碼,請選擇可選的 MSVC v140 建置工具。 當您滿意您的選擇時,請選擇 [ 安裝]。

如何使用命令列工具

當你在 Visual Studio 安裝程式中選擇其中一個 C++ 工作負載時,預設會安裝特定版本的 MSVC 建置工具套件。 2022 Visual Studio及更早版本,則以 platform 工具組(v### 版本格式)組織,該工具包含特定版本的 Visual Studio 所有 C 與 C++ 工具。 對於 Visual Studio 2026 及以後版本,這包含 MSVC 版本(v##.## 版本格式),其中包含該 MSVC 套件的所有 C 與 C++ 工具。 MSVC 版本與 Visual Studio 版本是解耦的。 這些工具包括 C/C++ 編譯程式、連結器、組合器和其他建置工具,以及比對連結庫和標頭檔。 您可以在命令列使用所有這些工具。 它們也被 Visual Studio IDE 內部使用。 有個別的 x86 裝載和 x64 裝載編譯器和工具,可建置 x86、x64、ARM 和 ARM64 目標的程式碼。 特定主機和目標組建架構適用的每一組工具都會儲存在其本身的目錄中。

若要正常運作,工具必須設定數個特定的環境變數。 這些變數可用來將工具新增至路徑,以及設定包含檔案、連結庫檔案和 SDK 的位置。 為了方便您設定這些環境變數,安裝程式在安裝期間會建立自訂命令檔或批次檔。 你可以執行這些指令檔,設定特定的主機與目標建置架構、Windows SDK 版本及平台工具組。 為了方便起見,安裝程式也會在 [開始] 功能表 中建立快捷方式。 快捷方式會針對主機和目標的特定組合,使用這些命令檔開啟開發人員命令提示字元視窗。 這些快捷方式可確保所有必要的環境變數都已設定並可供使用。

必要的環境變數專屬於您的安裝,以及您選擇的組建架構。 產品更新或升級也可能變更它們。 這種變異性是建議您使用已安裝的命令提示字元快捷方式或命令檔,而不是自行設定環境變數的原因之一。

安裝的工具組、命令檔和快捷方式取決於您的計算機處理器,以及您在安裝期間選取的選項。 始終會安裝用於建置 x86 和 x64 程式碼的 x86 主機工具和跨平台工具。 如果你有 64 位元 Windows,也會安裝 x64 託管的工具和交叉工具,用來建構 x86 和 x64 程式碼。 如果你選擇可選的 C++ 通用 Windows 平台 工具,則同時也會安裝用於編譯 ARM 和 ARM64 程式碼的 x86 和 x64 工具。 其他工作負載可能會安裝這些和其他工具。

命令行組建的路徑和環境變數

MSVC 命令行工具會使用 PATHTMPINCLUDE、、 LIBLIBPATH 環境變數,也使用您已安裝的工具、平臺和 SDK 特定的其他環境變數。 即使是簡單的 Visual Studio 安裝,也可能設定二十個以上的環境變數。 此複雜性是強烈建議您使用 開發人員命令提示字元快捷方式 或其中一個 自定義命令檔的原因。 我們不建議你自己在 Windows 環境中設定這些變數。

若要查看開發人員命令提示字元快捷方式所設定的環境變數,您可以使用 SET 命令。 開啟普通命令提示字元視窗,並記錄 SET 命令的輸出作為基準比較。 開啟開發人員命令提示字元視窗,並擷取命令的 SET 輸出以進行比較。 使用像是 Visual Studio 內建的差異工具,來標示開發者命令提示字元設定的環境變數。 如需編譯程式和鏈接器環境變數的詳細資訊,請參閱 CL環境變數

開發人員命令提示字元快捷方式

命令提示字元的捷徑會安裝在 Windows 開始選單中特定版本的 Visual Studio 資料夾內。 以下列出基礎命令提示字元捷徑及其支援的組建架構:

  • 開發人員命令提示字元 - 將環境設定為使用 32 位元、x86 原生工具來建置 32 位元、x86 原生程式碼。
  • x86 Native Tools 命令提示字元 - 將環境設定為使用 32 位元、x86 原生工具來建置 32 位元、x86 原生程式碼。
  • x64 Native Tools 命令提示字元 - 將環境設定為使用 64 位元、x64 原生工具來建置 64 位元、x64 原生程式碼。
  • x86_x64 Cross Tools 命令提示字元 - 將環境設定為使用 32 位元、x86 原生工具來建置 64 位元、x64 原生程式碼。
  • x64_x86 Cross Tools 命令提示字元 - 將環境設定為使用 64 位元、x64 原生工具來建置 32 位元、x86 原生程式碼。

開始選單資料夾和捷徑名稱會依安裝的 Visual Studio 版本而有所不同。 如果您設定了其中一個,這些也會依賴於安裝 昵稱。 舉例來說,假設你安裝了 2022 Visual Studio,並且給它取了個暱稱 Latest。 開發者命令提示字元捷徑名為 Developer Command Prompt for VS 2022 (Latest),資料夾名為 Visual Studio 2022

開始選單資料夾和捷徑名稱會依安裝的 Visual Studio 版本而有所不同。 如果您設置了其中一個,它們也會依賴於安裝的 昵稱。 舉例來說,假設你安裝了 2017 Visual Studio,並且給它取了個暱稱 Latest。 開發者命令提示字元捷徑名為 Developer Command Prompt for VS 2017 (Latest),存放於名為 Visual Studio 2017 的資料夾中。

開始選單資料夾和捷徑名稱會依安裝的 Visual Studio 版本而有所不同。 舉例來說,假設你安裝了 Visual Studio 2015。 開發人員命令提示字元快捷方式名為 VS 2015 的開發人員命令提示字元。

注意

數個命令行工具或工具選項可能需要系統管理員許可權。 如果您遇到許可權問題,我們建議您使用 以系統管理員身分執行 選項開啟開發人員命令提示字元視窗。 以滑鼠右鍵按兩下以開啟命令提示字元視窗的快捷方式功能表,然後選擇 [更多]、[以系統管理員身分執行]。

開啟開發人員命令提示字元視窗

  1. 在桌面上,開啟 Windows Start選單。 在Windows 11中,選擇所有應用程式按鈕以開啟已安裝的應用程式清單。 在 Windows 10 中,清單會打開在左側。 往下滑清單,找到並打開你版本Visual Studio的資料夾(不是應用程式),例如 Visual Studio 2022

  2. 在資料夾中,選擇適用於您版本的 Visual Studio 的開發人員命令提示字元。 此捷徑會啟動開發人員命令提示字元視窗,並使用 32 位元、x86 原生工具的預設組建架構來建置 32 位元、x86 原生程式碼。 如果您偏好使用非預設組建架構,請選擇其中一個原生或跨平台工具命令提示字元,以指定主機和目標架構。

若要加快開啟開發人員命令提示字元的方式,請在桌面搜尋方塊中輸入 開發人員命令提示字元 。 然後選擇您想要的結果。

注意

預設情況下,開發者指令提示字元中目前的工作目錄是你 Visual Studio 安裝在 Program Files 目錄中的根目錄。 這不是程式代碼和項目的適當位置。 在建立專案之前,將目前的工作目錄變更為另一個位置。 IDE 會在你的使用者目錄中建立專案,通常是在 %USERPROFILE%\source\repos

開發人員命令檔案位置

如果您想要在現有的命令提示字元視窗中設定組建環境,您可以使用安裝程式所建立的其中一個命令檔案。 建議您在新命令提示字元視窗中設定環境。 我們不建議您稍後在相同的命令視窗中切換環境。

指令檔的位置取決於你安裝的 Visual Studio 版本,以及安裝時所做的選擇。 適用於 Visual Studio 2022,在 64 位元系統上的典型安裝位置為 \Program Files\Microsoft Visual Studio\2022\<edition><edition>可能是 Community、Professional、Enterprise、BuildTools 或您提供的另一個昵稱。

指令檔的位置取決於你安裝的 Visual Studio 版本,以及安裝時所做的選擇。 對於 Visual Studio 2019,64位元系統的典型安裝位置為\Program Files (x86)\Microsoft Visual Studio\2019\<edition><edition>可能是 Community、Professional、Enterprise、BuildTools 或您提供的另一個昵稱。

指令檔的位置取決於你安裝的 Visual Studio 版本,以及安裝時所做的選擇。 對於 Visual Studio 2017,64位元系統的典型安裝位置為\Program Files (x86)\Microsoft Visual Studio\2017\<edition><edition>可能是 Community、Professional、Enterprise、BuildTools 或您提供的另一個昵稱。

指令檔案的位置取決於 Visual Studio 版本及安裝目錄。 以 Visual Studio 2015 為例,64 位元系統的典型安裝位置是 \Program Files (x86)\Microsoft Visual Studio 14.0

主要開發人員命令提示字元命令檔 VsDevCmd.bat位於 Common7\Tools 子目錄中。 未指定任何參數時,它會將環境設定為使用 x86 原生工具來建置 32 位 x86 程式代碼。

有更多命令檔可用來設定特定的組建架構。 可用的指令檔案取決於你安裝的 Visual Studio 工作負載和選項。 在 2017 Visual Studio 和 2019 Visual Studio,你可以在 VC\Auxiliary\Build 子目錄中找到它們。

有更多命令檔可用來設定特定的組建架構。 可用的指令檔案取決於你安裝的 Visual Studio 工作負載和選項。 在 2015 Visual Studio,它們位於 VCVC\binVC\bin\<architecture> 子目錄中,其中 <architecture> 是原生或交叉編譯器的選項之一。

這些命令檔會設定預設參數,並呼叫 VsDevCmd.bat 來設定指定的組建架構環境。 一般安裝可能會包含下列命令檔:

命令檔 主機和目標架構
vcvars32.bat 使用 32 位元 x86 原生工具來建置 32 位元 x86 程式碼。
vcvars64.bat 使用 64 位元 x64 原生工具來建置 64 位元 x64 程式碼。
vcvarsx86_amd64.bat 使用 32 位元 x86 原生跨平台工具來建置 64 位元 x64 程式碼。
vcvarsamd64_x86.bat 使用 64 位元 x64 原生跨平台工具來建置 32 位元 x86 程式碼。
vcvarsx86_arm.bat 使用 32 位元 x86 原生跨平台工具來建置 ARM 程式碼。
vcvarsamd64_arm.bat 使用 64 位元 x64 原生跨平台工具來建置 ARM 程式碼。
vcvarsx86_arm64.bat 使用32位 x86 原生跨工具建置ARM64程式碼。
vcvarsamd64_arm64.bat 使用 64 位 x64 原生跨工具建置 ARM64 程式代碼。
vcvarsall.bat 使用參數指定主機與目標架構、Windows SDK 及平台選擇。 若要取得支援的選項清單,請使用 /help 參數進行呼叫。

警告

vcvarsall.bat 檔案及其他Visual Studio指令檔案會因電腦而異。 請勿使用來自另一部計算機的檔案來取代遺失或損毀的 vcvarsall.bat 檔案。 重新執行 Visual Studio 安裝程式,替換缺少的檔案。

檔案 vcvarsall.bat 也會因版本而異。 如果目前版本的 Visual Studio 安裝在同時安裝有較早期版本 Visual Studio 的電腦上,請不要在同一命令提示字元視窗中執行不同版本的 vcvarsall.bat 或其他 Visual Studio 指令檔。

在現有的命令視窗中使用開發人員工具

在現有命令視窗中指定特定建置架構的最簡單方式是使用 vcvarsall.bat 檔案。 使用 vcvarsall.bat 設定環境變數來設定原生 32 位或 64 位編譯的命令行。 自變數可讓您指定 x86、x64、ARM 或 ARM64 處理器的交叉編譯。 你可以鎖定 Microsoft Store、通用 Windows 平台 或 Windows 桌面平台。 你甚至可以指定要用哪個 Windows SDK,並選擇平台工具組版本。

當不帶參數使用時,vcvarsall.bat 會將環境變數配置為使用 Windows 桌面目標上的 32 位元 x86 原生編譯器。 您可以新增自變數來設定環境,以使用任何原生或跨編譯程式工具。 vcvarsall.bat 如果您指定未安裝或計算機上無法使用的組態,則會顯示錯誤訊息。

vcvarsall 語法

vcvarsall.bat[] [architectureplatform_type] [winsdk_version] [] [-vcvars_ver=vcversion] [spectre_mode]

architecture
這個選擇性引數會指定要使用的主機和目標架構。 如果 architecture 沒有指定,則會使用預設的建置環境。 支援的引數如下:

architecture 編譯器 主機電腦架構 組建輸出 (目標) 架構
x86 x86 32 位元原生 x86、x64 x86
x86_amd64x86_x64 x64 在 x86 上的交叉架構 x86、x64 x64
x86_arm ARM 架構於 x86 平台上運行 x86、x64 ARM
x86_arm64 ARM64 on x86 (跨平台) x86、x64 ARM64
amd64x64 x64 64 位元原生 x64 x64
amd64_x86x64_x86 x86 on x64 (跨平台) x64 x86
amd64_armx64_arm ARM on x64 (跨平台) x64 ARM
amd64_arm64x64_arm64 ARM64 on x64 (跨平台) x64 ARM64

platform_type
這個選擇性自變數可讓您指定 storeuwp 作為平台類型。 根據預設,環境會設定為建置桌面或主控台應用程式。

winsdk_version
可選擇性地指定要使用的 Windows SDK 版本。 預設情況下,會使用最新安裝的 Windows SDK。 要指定 Windows SDK 版本,您可以使用完整的 Windows SDK 編號,例如 10.0.10240.0,或指定 8.1 來使用 Windows 8.1 SDK。

vcversion
可選擇指定要使用的 Visual Studio 編譯器工具組。 預設環境設定為使用目前的 Visual Studio 編譯工具組。

使用 -vcvars_ver=14.2x.yyyy 指定 Visual Studio 2019 編譯工具組的特定版本。

請使用 -vcvars_ver=14.29 指定 2019 Visual Studio 編譯工具組的最新版本。

使用 -vcvars_ver=14.16 指定 Visual Studio 2017 編譯器工具組的最新版本。

使用 -vcvars_ver=14.1x.yyyy 指定 Visual Studio 2017 編譯工具組的特定版本。

使用 -vcvars_ver=14.0 指定 Visual Studio 2015 編譯工具組。

spectre_mode
不設定此參數即可使用不具備 Spectre 經緯風險緩解的程式庫。 以spectre值使用帶有Spectre緩解措施的程式庫。

在現有的命令提示字元視窗中設定組建環境

  1. 在命令提示字元,使用 CD 指令切換到Visual Studio安裝目錄。 然後再用 Again CD ,切換到包含特定配置指令檔案的子目錄。 2019 Visual Studio 及 2017 Visual Studio,請使用 VC\Auxiliary\Build 子目錄。 Visual Studio 2015 年,請使用 VC 子目錄。

  2. 針對您慣用的開發人員環境輸入命令。 例如,要在 64 位元平台上為 UWP 編譯 ARM 程式碼,使用最新的 Windows SDK 和 Visual Studio 編譯工具組,請使用以下命令列:

    vcvarsall.bat amd64_arm uwp
    

建立您自己的命令提示字元捷徑

開啟開發人員命令提示字元快捷方式的 [屬性] 對話框,以查看所使用的命令目標。 例如,VS 2019 的 x64 Native Tools 命令提示字元捷徑的目標會類似於:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

開啟開發人員命令提示字元快捷方式的 [屬性] 對話框,以查看所使用的命令目標。 例如,VS 2017 的 x64 Native Tools 命令提示字元捷徑目標類似:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

開啟開發人員命令提示字元快捷方式的 [屬性] 對話框,以查看所使用的命令目標。 例如,VS2015 x64 Native Tools 命令提示字元的快捷方式的目標類似:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64

架構特定的批次處理檔會設定 architecture 參數並呼叫 vcvarsall.bat。 您可以將相同的選項傳遞至vcvarsall.bat的這些批處理檔,就像傳遞給vcvarsall.bat一樣,也可以直接呼叫vcvarsall.bat。 若要為您自己的命令捷徑指定參數,請將參數新增至命令結尾處,並以雙引號括住。 舉例來說,這裡有一個捷徑,可以在 64 位元平台上使用最新的 Windows SDK 編寫 UWP 的 ARM 程式碼。 若要使用先前的編譯程式工具組,請指定版本號碼。 可以考慮在您的捷徑中使用像這樣的命令目標:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0

調整路徑以反映你的 Visual Studio 安裝目錄。 檔案 vcvarsall.bat 中包含特定版本號的額外資訊。

命令列工具

若要在命令提示字元建立 C/C++ 專案,Visual Studio 提供以下命令列工具:

CL
使用編譯器(cl.exe)來編譯並將原始碼檔案連結到應用程式、函式庫和 DLL。

Link
使用連結器(link.exe)將已編譯的物件檔案和函式庫連結到應用程式和 DLL。

當您在命令行上建置時,F1 命令無法立即取得協助。 相反地,您可以使用搜尋引擎來取得警告、錯誤和訊息的相關信息。 您也可以下載並使用離線說明檔。 要在 Microsoft Learn 中使用搜尋功能,請在任何文章頂部的搜尋框輸入你的查詢。

命令行專案管理工具

預設情況下,Visual Studio IDE 使用基於 MSBuild 的原生專案建置系統。 您可以直接叫用 MSBuild 來建置專案,而不需使用 IDE。 你也可以使用 devenv 指令來用 Visual Studio 來建立專案和解決方案。 Visual Studio 也支援基於 CMake 或 NMake 的建置系統。

MSBuild
使用 MSBuild(msbuild.exe)和專案檔案(.vcxproj)來設定建置並呼叫工具組,無需載入Visual Studio IDE。 這相當於在Visual Studio IDE中執行 Build專案或 Build Solution指令。 MSBuild 在命令行建置時,在 IDE 上具有優勢。 您不需要在所有組建伺服器和建置管線上安裝完整的 IDE。 您可以避免 IDE 的額外負荷。 MSBuild 會在容器化組建環境中執行,並支援 二進位記錄器

DEVENV
使用 DEVENV(devenv.exe)搭配命令列開關,如 /Build/Clean,執行某些建置指令而不顯示Visual Studio IDE。

CMake
CMakecmake.exe () 是一個跨平台、開源的工具,用於定義可在多個平台上運行的建置流程。 CMake 可以設定及控制其支持平臺的原生建置工具,例如 MSBuild 和 Make。 如需 CMake 的詳細資訊,請參閱 CMake 文件

NMAKE
使用 NMAKEnmake.exe() 來使用傳統的 makefile 來建立 C++ 專案。

注意

從 Visual Studio 2019 16.5 版本開始,MSBuild 和 DEVENV 不再使用命令列環境來控制所使用的工具集和函式庫。

本節內容

這些文章說明如何在命令行上建置應用程式,並說明如何自定義命令行建置環境。 有些示範如何使用 64 位工具組,並將目標設為 x86、x64、ARM 和 ARM64 平臺。 它們也會描述使用命令行建置工具 MSBuild 和 NMAKE。

逐步解說:在命令行上編譯原生C++程式
提供範例,示範如何在命令行上建立和編譯C++程式。

逐步解說:在命令列上編譯 C 程式
描述如何編譯以 C 程式設計語言撰寫的程式。

逐步解說:在命令行上編譯C++/CLI 程式
說明如何建立並編譯使用 .NET 框架的 C++/CLI 程式。

逐步解說:在命令行上編譯C++/CX 程式
說明如何建立並編譯使用 Windows 執行階段 的 C++/CX 程式。

NMAKE 參考
提供描述Microsoft程式維護工具(NMAKE.EXE)的文章連結。

命令列上的 MSBuild - C++
提供有關如何從命令列使用 msbuild.exe 的文章連結。

/MD/MT, ( /LD 使用執行時函式庫)
描述如何使用這些編譯器選項,來使用偵錯或發行執行階段程式庫。

C/C++編譯程序選項
提供討論 C 與 C++ 編譯器選項的 CL.exe文章連結。

MSVC 連結器選項
提供有關連結器選項和LINK.exe相關文章的連結。

其他 MSVC 建置工具
提供 Visual Studio 內建的 C/C++ 建置工具連結。

另請參閱

專案和建置系統