From 70e9c2685fb75edab6af8ee2b889f868c945aeea Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 17 Oct 2023 18:43:57 +0200 Subject: [PATCH] vcpkg: Set VCPKG_ROOT environment variable for Qt Creator process This way CMakeProjectManager's auto-setup.cmake would pick it up and find vcpkg.exe Change-Id: Iafa84f13e0f50321ce771fc687ecc9e2df148de7 Reviewed-by: Alessandro Portale --- src/plugins/vcpkg/vcpkgplugin.cpp | 3 +++ src/plugins/vcpkg/vcpkgsettings.cpp | 8 ++++++++ src/plugins/vcpkg/vcpkgsettings.h | 2 ++ src/share/3rdparty/package-manager/auto-setup.cmake | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/vcpkg/vcpkgplugin.cpp b/src/plugins/vcpkg/vcpkgplugin.cpp index 2a0153d49ad..9dc717e08e1 100644 --- a/src/plugins/vcpkg/vcpkgplugin.cpp +++ b/src/plugins/vcpkg/vcpkgplugin.cpp @@ -5,6 +5,7 @@ #include "vcpkg_test.h" #endif // WITH_TESTS #include "vcpkgmanifesteditor.h" +#include "vcpkgsettings.h" #include @@ -35,6 +36,8 @@ public: #endif } + virtual void extensionsInitialized() final { settings().setVcpkgRootEnvironmentVariable(); } + std::unique_ptr d; }; diff --git a/src/plugins/vcpkg/vcpkgsettings.cpp b/src/plugins/vcpkg/vcpkgsettings.cpp index c0c5156d94f..4ea4496519d 100644 --- a/src/plugins/vcpkg/vcpkgsettings.cpp +++ b/src/plugins/vcpkg/vcpkgsettings.cpp @@ -42,6 +42,8 @@ VcpkgSettings::VcpkgSettings() if (defaultPath.isDir()) vcpkgRoot.setDefaultValue(defaultPath.toUserOutput()); + connect(this, &AspectContainer::applied, this, &VcpkgSettings::setVcpkgRootEnvironmentVariable); + setLayouter([this] { using namespace Layouting; auto websiteButton = new QToolButton; @@ -70,6 +72,12 @@ VcpkgSettings::VcpkgSettings() readSettings(); } +void VcpkgSettings::setVcpkgRootEnvironmentVariable() +{ + // Set VCPKG_ROOT environment variable so that auto-setup.cmake would pick it up + Environment::modifySystemEnvironment({{Constants::ENVVAR_VCPKG_ROOT, vcpkgRoot.value()}}); +} + class VcpkgSettingsPage : public Core::IOptionsPage { public: diff --git a/src/plugins/vcpkg/vcpkgsettings.h b/src/plugins/vcpkg/vcpkgsettings.h index dd266ad3716..acb41110b40 100644 --- a/src/plugins/vcpkg/vcpkgsettings.h +++ b/src/plugins/vcpkg/vcpkgsettings.h @@ -12,6 +12,8 @@ class VcpkgSettings : public Utils::AspectContainer public: VcpkgSettings(); + void setVcpkgRootEnvironmentVariable(); + Utils::FilePathAspect vcpkgRoot{this}; }; diff --git a/src/share/3rdparty/package-manager/auto-setup.cmake b/src/share/3rdparty/package-manager/auto-setup.cmake index 526dd333fa7..f6e6ce129aa 100644 --- a/src/share/3rdparty/package-manager/auto-setup.cmake +++ b/src/share/3rdparty/package-manager/auto-setup.cmake @@ -165,7 +165,7 @@ macro(qtc_auto_setup_vcpkg) if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP) option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF) - find_program(vcpkg_program vcpkg ${CMAKE_SOURCE_DIR}/vcpkg) + find_program(vcpkg_program vcpkg $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg) if (NOT vcpkg_program) message(WARNING "Qt Creator: vcpkg executable not found. " "Package manager auto-setup will be skipped. "