Skip to content

Instantly share code, notes, and snippets.

@wtnbgo
Last active November 2, 2022 08:15
Show Gist options
  • Save wtnbgo/3888ef0e40da29e79fffa46d0ef18925 to your computer and use it in GitHub Desktop.
Save wtnbgo/3888ef0e40da29e79fffa46d0ef18925 to your computer and use it in GitHub Desktop.
vcpkgの使ってるツールチェイン設定をそのまま使いたい場合用の cmake 定義

解説

環境変数 VCPKG_ROOT に vcpkg のルートフォルダを設定しておきます。

cmake 起動時に、VCPKG_TARGET_TRIPLET で vcpkg で指定する triplet を指定すると、vcpkg のツールチェインで構築されます 地味に android 用のクロスコンパイルとかにも対応出来て便利

cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static
# find vcpkg's toolchains
find_file(VCPKG_TRIPLET_FILE ${VCPKG_TARGET_TRIPLET}.cmake $ENV{VCPKG_ROOT}/triplets $ENV{VCPKG_ROOT}/triplets/community)
if (VCPKG_TRIPLET_FILE)
message("load triplet file:${VCPKG_TRIPLET_FILE}")
include(${VCPKG_TRIPLET_FILE})
set(SCRIPTS $ENV{VCPKG_ROOT}/scripts)
if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
if(NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME OR _TARGETTING_UWP)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "MinGW")
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
endif()
endif()
else()
message(WARNING "triplet:${VCPKG_TARGET_TRIPLET} file is not found")
endif()
message("toolchain:${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment