共用方式為


教學課程:在Visual StudioCode中搭配 CMake 安裝和使用套件

本教學課程說明如何建立 C++ “Hello World” 程式,以搭配 CMake、vcpkg 和 Visual Studio Code 使用 fmt 連結庫。 您將安裝相依性、設定、建置和執行簡單的應用程式。

必要條件

此範例會在 Visual Studio C++ 開發工作負載中使用 C++ MSVC 編譯程式。

1 - 設定 vcpkg

  1. 複製存放庫

    第一個步驟是從 GitHub 複製 vcpkg 存放庫。 存放庫包含可取得 vcpkg 可執行文件的腳本,以及 vcpkg 社群所維護之策劃開放原始碼連結庫的登錄。 若要這樣做,請執行:

    git clone https://github.com/microsoft/vcpkg.git
    

    vcpkg 策展登錄是一組超過 2,000 個開放原始碼連結庫。 這些連結庫已由 vcpkg 的持續整合管線進行驗證,以共同運作。 雖然 vcpkg 存放庫不包含這些連結庫的原始程式碼,但它會保存配方和元數據,以在您的系統中建置並安裝它們。

  2. 執行啟動程式腳本

    既然您已複製 vcpkg 存放庫,請瀏覽至 vcpkg 目錄並執行啟動程式腳本:

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    啟動程式腳本會執行必要條件檢查,並下載 vcpkg 可執行檔。

    介紹完畢 vcpkg 已設定且可供使用。

2 - 安裝 Visual Studio Code 延伸模組

流覽至 [擴充功能] 檢視,然後安裝 C++ 延伸模組。 這可啟用 C++ IntelliSense 和程式代碼流覽。

安裝 C++ Visual Studio Code 擴充功能

Visual Studio Code 擴充功能檢視與 C++ 延伸模組的螢幕快照

安裝 CMake 工具擴充功能。 這可在Visual StudioCode中啟用 CMake 支援。

安裝 CMake 工具 Visual Studio Code 擴充功能

Visual Studio Code 擴充功能檢視與 CMake 工具延伸模組的螢幕快照

3 - 設定 vcpkg

  1. 設定 VCPKG_ROOT 環境變數。

在 Visual Studio Code 中開啟新的終端機: 終端 > 機新終端機

執行下列命令:

$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"

設定 vcpkg 環境變數

設定VCPKG_ROOT並將其新增至Visual Studio Code終端機中PATH的螢幕快照。

注意

以這種方式設定環境變數只會影響目前的終端機會話。 若要在所有工作階段中永久進行這些變更,請透過 [Windows 系統環境變數] 面板加以設定。

set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%

注意

以這種方式設定環境變數只會影響目前的終端機會話。 若要在所有工作階段中永久進行這些變更,請透過 [Windows 系統環境變數] 面板加以設定。

export VCPKG_ROOT=/c/path/to/vcpkg
export PATH=$PATH:$VCPKG_ROOT

注意

使用 export 命令設定環境變數只會影響目前的殼層會話。 若要讓此變更在會話之間永久完成,請將 命令新增 export 至殼層的配置檔腳本(例如 ~/.bashrc~/.zshrc)。

設定 VCPKG_ROOT 可協助 Visual Studio 找出您的 vcpkg 實例。 新增它以確保 PATH 您可以直接從殼層執行 vcpkg 命令。

  1. 產生指令清單檔案並新增相依性。

執行下列命令以建立 vcpkg 指令清單檔案 (vcpkg.json):

vcpkg new --application

命令 vcpkg new 會在項目的目錄中新增 vcpkg.json 檔案和 vcpkg-configuration.json 檔案。

fmt將套件新增為相依性:

vcpkg add port fmt

vcpkg.json 現在應該包含:

{
  "dependencies": [
    "fmt"
  ]
}

這是您的指令清單檔案。 vcpkg 會讀取指令清單檔,以瞭解要安裝和整合哪些相依性與 MSBuild,以提供專案所需的相依性。

產生的vcpkg-configuration.json檔案引進了基準,以將最低版本條件約束放在專案的相依性上。 修改此檔案超出本教學課程的範圍。 雖然本教學課程不適用,但最好讓 vcpkg-configuration.json 檔案保持在原始檔控制之下,以確保不同開發環境之間的版本一致性。

3 - 設定項目檔

CMakeLists.txt使用下列內容建立檔案:

cmake_minimum_required(VERSION 3.10)

project(HelloWorld)

find_package(fmt CONFIG REQUIRED)

add_executable(HelloWorld main.cpp)

target_link_libraries(HelloWorld PRIVATE fmt::fmt)

現在,讓我們細分檔案中 CMakeLists.txt 每一行的功能:

  • cmake_minimum_required(VERSION 3.10):指定建置專案所需的 CMake 最低版本為 3.10。 如果您的系統上安裝的 CMake 版本低於此版本,則會產生錯誤。
  • project(HelloWorld):將專案的名稱設定為 「HelloWorld」。。
  • find_package(fmt CONFIG REQUIRED):使用其 CMake 組態檔尋找連結 fmt 庫。 關鍵詞 REQUIRED 可確保找不到套件時,會產生錯誤。
  • add_executable(HelloWorld main.cpp):新增名為 「HelloWorld」 的可執行檔目標,從原始程式檔 main.cpp建置。
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt):指定 HelloWorld 可執行文件應該連結至 fmt 連結庫。 關鍵詞 PRIVATE 表示 fmt 只需要建置 HelloWorld ,且不應該傳播至其他相依專案。

helloworld.cpp使用下列內容建立檔案:

#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

在此 helloworld.cpp 檔案中, <fmt/core.h> 會包含使用連結庫的 fmt 標頭。 函式 main() 接著會呼叫 fmt::print() ,將 “Hello World!” 訊息輸出至控制台。

若要允許 CMake 專案系統辨識 vcpkg 所提供的 C++ 連結庫,您必須提供 vcpkg.cmake 工具鏈檔案。 若要將此作業自動化,請使用下列內容在 「helloworld」 目錄中建立 CMakePresets.json 檔案:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}

使用下列內容在 「helloworld」 目錄中建立 CMakeUserPresets.json 檔案:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "default",
      "inherits": "vcpkg",
      "environment": {
        "VCPKG_ROOT": "<path to vcpkg>"
      }
    }
  ]
}

CMakePresets.json 檔案包含 CMake 的單一 「vcpkg」 預設值,並設定 CMAKE_TOOLCHAIN_FILE 變數。 CMAKE_TOOLCHAIN_FILE允許 CMake 專案系統辨識 vcpkg 所提供的 C++ 連結庫。 只有在 CMakePresets.json 本機使用時 CMakeUserPresets.json ,才應該簽入原始檔控制。

4 - 建置並執行專案

  1. 流覽至檢視CMake: Build>命令選擇區中的命令選擇區,以執行專案

Visual Studio Code 中的 CMake 建置命令

在 Visual Studio Code 中選取 CMake 建置命令的螢幕快照。

default選取 CMake 預設。 這會啟用 vcpkg 工具鏈。

在 Visual Studio Code 中選取 CMake 建置命令中的預設值

在 Visual Studio Code 中選取 CMake 建置命令中預設的螢幕快照。

  1. 啟動專案

您應該會看到以下輸出:

Hello World!

下一步

若要深入瞭解 vcpkg.json,請參閱我們的參考檔: