從命令列使用 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 中安裝 C++ 支援。 如果您只想要命令列工具組,請下載適用于 Visual Studio 建置工具。 當您執行下載的可執行檔時,它會更新並執行Visual Studio 安裝程式。 若只要安裝 C++ 開發所需的工具,請選取 [ 使用 C++ 進行桌面開發] 工作負載。 您可以選取選擇性的程式庫和工具組,以包含在 [安裝詳細資料 ] 底下 。 若要使用 Visual Studio 2015、2017 或 2019 工具組建置程式碼,請選取選擇性的 MSVC v140、v141 或 v142 建置工具。 當您滿意您的選擇時,請選擇 [ 安裝 ]。

如果您已安裝 Visual Studio 和 C++ 工作負載,則您擁有所有的命令列工具。 如需如何安裝 C++ 和 Visual Studio 的資訊,請參閱 在 Visual Studio 中安裝 C++ 支援。 如果您只想要命令列工具組,請下載適用于 Visual Studio 2017 建置工具。 當您執行下載的可執行檔時,它會更新並執行Visual Studio 安裝程式。 若要只安裝 C++ 開發所需的工具,請選取 Visual C++ 建置工具 工作負載。 您可以選取選擇性的程式庫和工具組,以包含在 [安裝詳細資料 ] 底下 。 若要使用 Visual Studio 2015 工具組建置程式碼,請選取選擇性的 MSVC v140 建置工具。 當您滿意您的選擇時,請選擇 [ 安裝 ]。

如何使用命令列工具

當您選擇 Visual Studio 安裝程式中的其中一個 C++ 工作負載時,它將會安裝 Visual Studio 平台工具組。 平臺工具組具有特定 Visual Studio 版本的所有 C 和 C++ 工具。 這些工具組括 C/C++ 編譯器、連結器、組合器和其他建置工具,以及比對程式庫和標頭檔。 您可以在命令列使用所有這些工具。 Visual Studio IDE 也會在內部使用它們。 有個別的 x86 裝載和 x64 裝載的編譯器和工具來建置 x86、x64、ARM 和 ARM64 目標的程式碼。 特定主機和目標組建架構適用的每一組工具都會儲存在其本身的目錄中。

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

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

安裝的工具組、命令檔和快捷方式取決於您的電腦處理器,以及您在安裝期間選取的選項。 一律會安裝建置 x86 和 x64 程式碼的 x86 裝載工具和跨工具。 如果您有 64 位 Windows,也會安裝建置 x86 和 x64 程式碼的 x64 裝載工具和跨工具。 如果您選擇選用的 C++ 通用 Windows 平臺工具,則也會安裝建置 ARM 和 ARM64 程式碼的 x86 和 x64 工具。 其他工作負載可能會安裝這些和其他工具。

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

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

若要查看開發人員命令提示字元快捷方式所設定的環境變數,您可以使用 SET 命令。 開啟一般命令提示字元視窗,並擷取基準命令的 SET 輸出。 開啟開發人員命令提示字元視窗,並擷取命令的 SET 輸出以進行比較。 使用 diff 工具,例如 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 版本而有所不同。 如果您設定一個,它們也會相依于安裝 昵稱 。 例如,假設您已安裝 Visual Studio 2022,並為其指定了 Latest 昵稱。 開發人員命令提示字元快捷方式名為 VISUAL Studio 2022 資料夾中的 VS 2022 開發人員命令提示字元(最新版 )。

[開始] 功能表資料夾和快捷方式名稱會根據已安裝的 Visual Studio 版本而有所不同。 如果您設定一個,它們也會相依于安裝 昵稱 。 例如,假設您已安裝 Visual Studio 2017,並為其指定了 Latest 昵稱。 開發人員命令提示字元快捷方式名為 VISUAL Studio 2017 資料夾中的 VS 2017 開發人員命令提示字元(最新版 )。

[開始] 功能表資料夾和快捷方式名稱會根據已安裝的 Visual Studio 版本而有所不同。 例如,假設您已安裝 Visual Studio 2015。 開發人員命令提示字元快捷方式名為 VS 2015 的開發人員命令提示字元。

注意

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

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

  1. 在桌面上,開啟 [Windows 開始 ] 功能表。 在 Windows 11 中,選擇 [ 所有應用程式 ] 按鈕以開啟已安裝的應用程式清單。 在 Windows 10 中,清單會向左開啟。 向下捲動清單以尋找並開啟 Visual Studio 版本的資料夾(而非應用程式),例如 Visual Studio 2022

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

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

注意

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

開發人員命令檔案位置

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

命令檔案位置取決於您安裝的 Visual Studio 版本,以及您在安裝期間所做的選擇。 針對 Visual Studio 2019,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 工作負載和選項。 在 Visual Studio 2017 和 Visual Studio 2019 中,您會在 VC\Auxiliary\Build 子目錄中找到它們。

有更多命令檔可用來設定特定的組建架構。 可用的命令檔案取決於您已安裝的 Visual Studio 工作負載和選項。 在 Visual Studio 2015 中,它們位於 VC、VC\bin 或 VC\bin\ 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 將環境變數設定為針對 32 位 Windows 桌面目標使用目前的 x86 原生編譯器。 您可以新增引數來設定環境,以使用任何原生或跨編譯器工具。 vcvarsall.bat 如果您指定未安裝或電腦上無法使用的組態,則會顯示錯誤訊息。

vcvarsall 語法

vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver=vcversion] [spectre_mode]

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

architecture 編譯器 主機電腦架構 組建輸出 (目標) 架構
x86 x86 32 位元原生 x86、x64 x86
x86_amd64x86_x64 x64 on x86 (跨平台) x86、x64 x64
x86_arm ARM on 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.yyyyyy 指定 Visual Studio 2019 編譯器工具組的特定版本。

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

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

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

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

spectre_mode
將此參數排除在不使用 Spectre 風險降低的情況下使用程式庫。 使用 值 spectre 搭配 Spectre 風險降低使用程式庫。

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

  1. 在命令提示字元中,使用 CD 命令切換至 Visual Studio 安裝目錄。 然後,再次使用 CD 變更至包含組態特定指令檔的子目錄。 針對 Visual Studio 2019 和 Visual Studio 2017,請使用 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 。 若要為您自己的命令捷徑指定參數,請將參數新增至命令結尾處,並以雙引號括住。 例如,以下是使用最新 Windows SDK 在 64 位平臺上建置 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 中執行 [建 置專案] 或 [建置方案 ] 命令。 MSBuild 在命令列建置時,在 IDE 上具有優勢。 您不需要在所有組建伺服器和建置管線上安裝完整的 IDE。 您可以避免 IDE 的額外負荷。 MSBuild 會在容器化組建環境中執行,並支援 二進位記錄器

DEVENV
使用 DEVENV (devenv.exe) 結合命令列參數,例如 /Build/Clean 來執行特定建置命令,而不顯示 Visual Studio IDE。

CMake
CMake (cmake.exe) 是跨平臺的開放原始碼工具,可用來定義在多個平臺上執行的建置程式。 CMake 可以設定及控制其支援平臺的原生建置工具,例如 MSBuild 和 Make。 如需 CMake 的詳細資訊,請參閱 CMake 檔

NMAKE
使用 NMAKE (nmake.exe) 建置 C++ 專案,方法是使用傳統的 makefile。

注意

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

本節內容

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

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

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

逐步解說:在命令列上編譯 C++/CLI 程式
描述如何建立及編譯使用 .NET Framework 的 C++/CLI 程式。

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

NMAKE 參考
提供指向描述 Microsoft Program Maintenance Utility (NMAKE.EXE) 之文章的連結。

命令列上的 MSBuild - C++
提供連結以供存取討論如何從命令列使用 msbuild.exe 的文章。

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

C/C++ 編譯器選項
提供指向討論 C 及 C++ 編譯器選項及 CL.exe 之文章的連結。

MSVC 連結器選項
提供指向討論連結器選項及 LINK.exe 之文章的連結。

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

另請參閱

專案和建置系統