diff --git a/conan/tools/cmake/cmakedeps2/cmakedeps.py b/conan/tools/cmake/cmakedeps2/cmakedeps.py index 0847d18485a..0eba5441ccd 100644 --- a/conan/tools/cmake/cmakedeps2/cmakedeps.py +++ b/conan/tools/cmake/cmakedeps2/cmakedeps.py @@ -172,6 +172,8 @@ def generate(self): {% endfor %} {% if host_runtime_dirs %} set(CONAN_RUNTIME_LIB_DIRS {{ host_runtime_dirs }} ) + # Only for VS, needs CMake>=3.27 + set(CMAKE_VS_DEBUGGER_ENVIRONMENT "PATH=${CONAN_RUNTIME_LIB_DIRS};%PATH%") {% endif %} {% if cmake_program_path %} list(PREPEND CMAKE_PROGRAM_PATH {{ cmake_program_path }}) @@ -250,7 +252,10 @@ def _get_host_runtime_dirs(self): host_runtime_dirs.setdefault(config, []).append(paths) is_win = self._conanfile.settings.get_safe("os") == "Windows" - for req in self._conanfile.dependencies.host.values(): + + host_req = self._conanfile.dependencies.host + test_req = self._conanfile.dependencies.test + for req in list(host_req.values()) + list(test_req.values()): config = req.settings.get_safe("build_type", self._cmakedeps.configuration) aggregated_cppinfo = req.cpp_info.aggregated_components() runtime_dirs = aggregated_cppinfo.bindirs if is_win else aggregated_cppinfo.libdirs diff --git a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new_paths.py b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new_paths.py index 8624447226e..ebe84a29d55 100644 --- a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new_paths.py +++ b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new_paths.py @@ -97,6 +97,8 @@ def test_runtime_lib_dirs_multiconf(self): runtime_lib_dirs = re.search(pattern_lib_dirs, contents).group(1) assert "" in runtime_lib_dirs assert "" in runtime_lib_dirs + # too simple of a check, but this is impossible to test automatically + assert "set(CMAKE_VS_DEBUGGER_ENVIRONMENT" in contents @pytest.mark.tool("cmake")