From 068977e2f557e877ebc8be0bda490b7117c81d4d Mon Sep 17 00:00:00 2001 From: Duncan Ogilvie Date: Thu, 28 Nov 2024 23:01:14 +0100 Subject: [PATCH] Use absolute paths for vcpkg overlays --- src/cmake_generator.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/cmake_generator.cpp b/src/cmake_generator.cpp index dfa83b0..808229e 100644 --- a/src/cmake_generator.cpp +++ b/src/cmake_generator.cpp @@ -865,12 +865,17 @@ void generate_cmake(const char *path, const parser::Project *parent_project) { comment("vcpkg settings"); auto emit_overlay = [&cmd](const std::string &name, const std::vector &overlay) { if (!overlay.empty()) { + std::vector set_args; for (const auto &directory : overlay) { + if (!fs::path(directory).is_relative()) { + throw std::runtime_error("[vcpkg] overlay is not a relative path: " + directory); + } if (!fs::is_directory(directory)) { throw std::runtime_error("[vcpkg] overlay is not a directory: " + directory); } + set_args.emplace_back("${CMAKE_CURRENT_SOURCE_DIR}/" + directory); } - cmd("set")(name, overlay); + cmd("set")(name, set_args); } }; emit_overlay("VCPKG_OVERLAY_PORTS", project.vcpkg.overlay_ports);