教學課程:在Visual StudioCode中搭配 CMake 安裝和使用套件
本教學課程說明如何建立C++ “Hello World” 程式,以搭配 CMake、vcpkg 和 Visual Studio Code 使用連結 fmt
庫。 您將安裝相依性、設定、建置和執行簡單的應用程式。
必要條件
- Visual Studio Code
- C++ 編譯器
- Windows 7 或更新版本
1 - 設定 vcpkg
複製存放庫
第一個步驟是從 GitHub 複製 vcpkg 存放庫。 存放庫包含可取得 vcpkg 可執行文件的腳本,以及 vcpkg 社群所維護之策劃開放原始碼連結庫的登錄。 若要這樣做,請執行:
git clone https://github.com/microsoft/vcpkg.git
vcpkg 策展登錄是一組超過 2,000 個開放原始碼連結庫。 這些連結庫已由 vcpkg 的持續整合管線進行驗證,以共同運作。 雖然 vcpkg 存放庫不包含這些連結庫的原始程式碼,但它會保存配方和元數據,以在您的系統中建置並安裝它們。
執行啟動程式腳本
既然您已複製 vcpkg 存放庫,請瀏覽至
vcpkg
目錄並執行啟動程式腳本:cd vcpkg && bootstrap-vcpkg.bat
cd vcpkg; .\bootstrap-vcpkg.bat
cd vcpkg && ./bootstrap-vcpkg.sh
啟動程式腳本會執行必要條件檢查,並下載 vcpkg 可執行檔。
介紹完畢 vcpkg 已設定且可供使用。
2 - 建立項目資料夾
注意
如果您在 Windows 中執行本教學課程,並使用 MSVC 作為編譯程式,您需要從 VS 的開發人員命令提示字元或適用於 VS 的開發人員 PowerShell 啟動 Visual Studio Code 實例。 這可確保編譯程式路徑和其他環境變數已正確設定。
建立資料夾,以將項目檔保存在您選擇的位置。 在本教學課程中,我們會建立名為 「helloworld」 的資料夾。 然後使用 Visual Studio Code 開啟資料夾。
mkdir helloworld
code helloworld
3 - 安裝 Visual Studio Code 延伸模組
流覽至 [擴充功能] 檢視,然後安裝 C++ 延伸模組。 這可讓您C++ IntelliSense 和程式代碼流覽。
具有 C++ 延伸模組的 Visual Studio Code 擴充功能檢視螢幕快照
安裝 CMake 工具擴充功能。 這可在Visual StudioCode中啟用 CMake 支援。
Visual Studio Code 擴充功能檢視與 CMake 工具延伸模組的螢幕快照
4 - 設定環境變數
- 設定
VCPKG_ROOT
環境變數。
在 Visual Studio Code 中開啟新的終端機: 終端 > 機新終端機
執行下列命令:
注意
以這種方式設定環境變數只會影響目前的終端機會話。 若要在所有工作階段中永久進行這些變更,請透過 [Windows 系統環境變數] 面板加以設定。
$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"
設定VCPKG_ROOT並將其新增至Visual Studio Code終端機中PATH的螢幕快照。
注意
以這種方式設定環境變數只會影響目前的終端機會話。 若要在所有工作階段中永久進行這些變更,請透過 [Windows 系統環境變數] 面板加以設定。
注意
以這種方式設定環境變數只會影響目前的終端機會話。 若要在所有工作階段中永久進行這些變更,請透過 [Windows 系統環境變數] 面板加以設定。
set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%
注意
使用 export
命令設定環境變數只會影響目前的殼層會話。 若要讓此變更在會話之間永久完成,請將 命令新增 export
至殼層的配置檔腳本(例如 ~/.bashrc
或 ~/.zshrc
)。
export VCPKG_ROOT=/c/path/to/vcpkg
export PATH=$PATH:$VCPKG_ROOT
設定 VCPKG_ROOT
可協助 Visual Studio Code 找出您的 vcpkg 實例。
新增它以確保 PATH
您可以直接從殼層執行 vcpkg 命令。
- 產生指令清單檔案並新增相依性。
執行下列命令,以在資料夾的helloworld
根目錄中建立 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
檔案保持在原始檔控制之下,以確保不同開發環境之間的版本一致性。
5 - 設定項目檔
CMakeLists.txt
建立檔案
使用下列內容,在專案資料夾的根目錄中建立名為 CMakeLists.txt
的新檔案:
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
find_package(fmt CONFIG REQUIRED)
add_executable(HelloWorld helloworld.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 helloworld.cpp)
:新增名為 「HelloWorld」 的可執行檔目標,從原始程式檔helloworld.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
,才應該簽入原始檔控制。
6 - 建置並執行專案
- 流覽至檢視
CMake: Build
>命令選擇區中的命令選擇區,以執行專案
在 Visual Studio Code 中選取 CMake 建置命令的螢幕快照。
default
選取 CMake 預設。 這會啟用 vcpkg 工具鏈。
在 Visual Studio Code 中選取 CMake 建置命令中預設的螢幕快照。
- 啟動專案
執行程式:
./build/HelloWorld.exe
./build/HelloWorld
您應該會看到以下輸出:
Hello World!
下一步
若要深入瞭解 vcpkg.json
,請參閱我們的參考檔: