添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如需使用 CMake 的完整範例,請參閱 安裝和使用套件範例:sqlite

CMAKE_TOOLCHAIN_FILE

設定為透過 CMake 設定 CMAKE_TOOLCHAIN_FILE (vcpkg 工具鏈檔案的專案,) 可以使用標準 CMake 函式從 vcpkg 尋找程式庫: find_package() find_path() find_library()

建議您使用 CMake 預設 來指定您的工具鏈檔案。 例如,如果您已定義環境變數 VCPKG_ROOT ,您可以使用下列程式碼 CMakePresets.json 並傳遞 --preset debug 設定行:

"version": 3, "configurePresets": [ "name": "debug", "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
cmake -B build -S /my/project --preset debug

如果您需要針對目前電腦特定的 vcpkg 使用絕對路徑,您可以使用 CMakeUserPresets.json 並將它新增至您的 .gitignore 檔案。

"version": 3, "configurePresets": [ "name": "debug", "toolchainFile": "C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake"

3.19 之前的 CMake 版本必須在設定命令列上傳遞工具鏈檔案:

cmake ../my/project -DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake

使用程式庫

vcpkg 支援 CMake 的原生機制來尋找程式庫: find_package()find_library()find_path() 。 安裝具有特定 CMake 支援的程式庫時,vcpkg 會顯示如何使用程式庫的使用方式資訊:

The package zlib is compatible with built-in CMake targets:
    find_package(ZLIB REQUIRED)
    target_link_libraries(main PRIVATE ZLIB::ZLIB)

vcpkg 不會自動將任何包含或連結路徑新增至您的專案。 若要使用僅限標頭的程式庫,您可以使用 find_path() 可在所有平臺上正確運作的程式庫:

# To find and use catch2
find_path(CATCH_INCLUDE_DIR NAMES catch.hpp PATH_SUFFIXES catch2)
include_directories(${CATCH_INCLUDE_DIR})

IDE 整合

Visual Studio / Visual Studio Code

建議您在 Visual Studio 和 Visual Studio Code中使用CMake 預設值

若要深入瞭解,請參閱在 Visual Studio 中使用 CMake 預設值進行設定和建置,以及在Visual Studio Code 中使用 CMake 預設值進行設定和建置。

CLion

開啟 Windows 和 Linux 上的工具鏈設定 (File > SettingsCLion > Preferences macOS) ,然後移至 CMake 設定 (Build, Execution, Deployment > CMake) 。 在 中 CMake options ,新增下列這一行:

-DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake

您必須將這一行分別新增至每個設定檔。

使用多個工具鏈檔案

若要將 vcpkg 的工具鏈檔案與其他工具鏈檔案結合,您可以設定 CMake 快取變數 VCPKG_CHAINLOAD_TOOLCHAIN_FILE

cmake ../my/project \
   -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake \
   -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=../my/project/toolchain.cmake

或者,您可以在主要工具鏈檔案結尾包含 vcpkg 工具鏈:

# MyToolchain.cmake
set(CMAKE_CXX_COMPILER ...)
set(VCPKG_TARGET_TRIPLET x64-my-custom-windows-triplet)
include(/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake)

vcpkg 不會在建置程式庫時自動套用工具鏈的設定,例如編譯器或編譯旗標。 若要變更 vcpkg 的程式庫設定,您必須建立 自訂三元檔案 (,以 共用工具鏈) **

所有影響 vcpkg 的變數都必須定義在第一個 project()CMakePresets.json 指示詞之前,例如 在 的 "cacheVariables" 對應中,透過命令列或 set() 語句。

VCPKG_TARGET_TRIPLET

此設定可控制 三重 vcpkg 將安裝及取用程式庫的來源。

如果未設定,則 vcpkg 會在目前的編譯器設定下自動偵測適當的預設三元組。 如果您變更此 CMake 變數,則必須刪除快取並重新設定。

VCPKG_HOST_TRIPLET

此變數會控制將針對哪個 三重 主機相依性進行安裝。

如果未設定,vcpkg 會自動偵測適當的原生三重 (x64-windows、x64-osx、x64-linux) 。

另請參閱 主機相依性

VCPKG_INSTALLED_DIR

此變數會設定將安裝及取用程式庫的位置。

在資訊清單模式中,預設值為 ${CMAKE_BINARY_DIR}/vcpkg_installed

在傳統模式中,預設值為 ${VCPKG_ROOT}/installed

VCPKG_MANIFEST_MODE

此變數會強制 vcpkg 以資訊清單模式或傳統模式運作。

當 非空白或 ${CMAKE_SOURCE_DIR}/vcpkg.json 存在時 VCPKG_MANIFEST_DIR ,預設為 ON

若要在偵測到 時 vcpkg.json 停用資訊清單模式,請將此設定為 OFF

VCPKG_MANIFEST_DIR

此變數會指定包含資訊清單的 vcpkg.json 替代資料夾。

如果 ${CMAKE_SOURCE_DIR}/vcpkg.json 存在,則預設為 ${CMAKE_SOURCE_DIR}

VCPKG_MANIFEST_INSTALL

此變數可控制 vcpkg 是否會在設定步驟期間自動執行以安裝您的相依性。

如果 VCPKG_MANIFEST_MODEON ,則預設為 ON

VCPKG_BOOTSTRAP_OPTIONS

此變數可以設定為其他命令參數,以傳遞至 ./bootstrap-vcpkg

在資訊清單模式中,如果可執行檔不存在,vcpkg 會自動啟動。

VCPKG_OVERLAY_TRIPLETS

此變數可以設定為要在命令列上傳遞的路徑清單, --overlay-triplets=...

VCPKG_OVERLAY_PORTS

此變數可以設定為要在命令列上傳遞的路徑清單, --overlay-ports=...

VCPKG_MANIFEST_FEATURES

此變數可以設定為從資訊清單安裝時要啟用的功能清單。

例如,專案可以使用功能來控制使用其他相依性進行建置,以啟用測試或範例:

"name": "mylibrary", "version": "1.0", "dependencies": [ "curl" ], "features": { "samples": { "description": "Build Samples", "dependencies": [ "fltk" ] "tests": { "description": "Build Tests", "dependencies": [ "gtest" ]

此設定可以直接由 CMake 預設值"cacheVariables" 控制,或根據其他設定間接控制:

# CMakeLists.txt
option(BUILD_TESTING "Build tests" OFF)
if(BUILD_TESTING)
  list(APPEND VCPKG_MANIFEST_FEATURES "tests")
endif()
option(BUILD_SAMPLES "Build samples" OFF)
if(BUILD_SAMPLES)
  list(APPEND VCPKG_MANIFEST_FEATURES "samples")
endif()
project(myapp)
# ...

VCPKG_MANIFEST_NO_DEFAULT_FEATURES

除了 中列出的 VCPKG_MANIFEST_FEATURES 功能之外,此變數還會控制預設功能的啟用。 如果設定為 ON ,則不會自動啟用預設功能。

預設值為 OFF

VCPKG_INSTALL_OPTIONS

此變數可以設定為額外的命令列參數清單,以在自動安裝期間傳遞至 vcpkg 工具。

VCPKG_PREFER_SYSTEM_LIBS

這項功能已被取代。 請改用空的重迭埠。

此變數會控制 vcpkg 是否會附加, CMAKE_PREFIX_PATH 而不是在其路徑前面加上 , CMAKE_LIBRARY_PATHCMAKE_FIND_ROOT_PATH 以便 vcpkg 程式庫/套件在工具鏈/系統程式庫/套件之後找到。

預設值為 OFF

VCPKG_FEATURE_FLAGS

此變數可以設定為功能旗標清單,以在自動安裝期間傳遞至 vcpkg 工具,以加入宣告實驗行為。

如需詳細資訊, --feature-flags= 請參閱命令列選項。

VCPKG_TRACE_FIND_PACKAGE

當設定為 ON 時,列印對 的每個呼叫 find_package 。 巢狀呼叫 (例如,透過 find_dependency) 會根據巢狀深度縮排。