diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 747659de3b8..06137921bbe 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -2086,6 +2086,13 @@ CMakeBuildSystem *CMakeBuildConfiguration::cmakeBuildSystem() const void CMakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const { + // Use the user provided VCPKG_ROOT if existing + // Visual C++ 2022 (and newer) come with their own VCPKG_ROOT + // that is incompatible with Qt Creator + const QString vcpkgRoot = qtcEnvironmentVariable(Constants::VCPKG_ROOT); + if (!vcpkgRoot.isEmpty()) + env.set(Constants::VCPKG_ROOT, vcpkgRoot); + const CMakeTool *tool = CMakeKitAspect::cmakeTool(kit()); // The hack further down is only relevant for desktop if (tool && tool->cmakeExecutable().needsDevice()) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h index 04922b6e9db..bd060da4470 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h @@ -27,6 +27,7 @@ const char CMAKEFORMATTER_MENU_ID[] = "CMakeFormatter.Menu"; const char CMAKE_DEBUGGING_GROUP[] = "Debugger.Group.CMake"; const char PACKAGE_MANAGER_DIR[] = ".qtc/package-manager"; +const char VCPKG_ROOT[] = "VCPKG_ROOT"; const char CMAKE_LISTS_TXT[] = "CMakeLists.txt"; const char CMAKE_CACHE_TXT[] = "CMakeCache.txt"; diff --git a/src/share/3rdparty/package-manager/auto-setup.cmake b/src/share/3rdparty/package-manager/auto-setup.cmake index 628b69cc768..c797138f67b 100644 --- a/src/share/3rdparty/package-manager/auto-setup.cmake +++ b/src/share/3rdparty/package-manager/auto-setup.cmake @@ -199,7 +199,10 @@ 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 $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg) + find_program(vcpkg_program vcpkg + PATHS $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg + NO_DEFAULT_PATH + ) if (NOT vcpkg_program) message(WARNING "Qt Creator: vcpkg executable not found. " "Package manager auto-setup will be skipped. "