aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-03-10 14:19:07 -0800
committerRobert Schumacher <roschuma@microsoft.com>2018-03-10 14:19:51 -0800
commit6670b87c18c544bbc9fa167f583b27dc52bce3d9 (patch)
tree33de58b013854ca17af97e12de5d4a38381ee108 /toolsrc/src
parentb7daa881f5941f7b4aaf7d8ad667b5a761c9b4cc (diff)
downloadvcpkg-6670b87c18c544bbc9fa167f583b27dc52bce3d9.tar.gz
vcpkg-6670b87c18c544bbc9fa167f583b27dc52bce3d9.zip
[vcpkg] Add VCPKG_DEFAULT_VS_PATH environment variable
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg.cpp4
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp9
2 files changed, 10 insertions, 3 deletions
diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp
index ef68e6f72..d9b915367 100644
--- a/toolsrc/src/vcpkg.cpp
+++ b/toolsrc/src/vcpkg.cpp
@@ -94,7 +94,9 @@ static void inner(const VcpkgCmdArguments& args)
Checks::check_exit(VCPKG_LINE_INFO, !vcpkg_root_dir.empty(), "Error: Could not detect vcpkg-root.");
- const Expected<VcpkgPaths> expected_paths = VcpkgPaths::create(vcpkg_root_dir);
+ auto default_vs_path = System::get_environment_variable("VCPKG_DEFAULT_VS_PATH").value_or("");
+
+ const Expected<VcpkgPaths> expected_paths = VcpkgPaths::create(vcpkg_root_dir, default_vs_path);
Checks::check_exit(VCPKG_LINE_INFO,
!expected_paths.error(),
"Error: Invalid vcpkg root directory %s: %s",
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index e62ef8662..02bc5f041 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -293,7 +293,7 @@ namespace vcpkg
return fetch_tool(paths.scripts, "installerbase", TOOL_DATA);
}
- Expected<VcpkgPaths> VcpkgPaths::create(const fs::path& vcpkg_root_dir)
+ Expected<VcpkgPaths> VcpkgPaths::create(const fs::path& vcpkg_root_dir, const std::string& default_vs_path)
{
std::error_code ec;
const fs::path canonical_vcpkg_root_dir = fs::stdfs::canonical(vcpkg_root_dir, ec);
@@ -304,6 +304,7 @@ namespace vcpkg
VcpkgPaths paths;
paths.root = canonical_vcpkg_root_dir;
+ paths.default_vs_path = default_vs_path;
if (paths.root.empty())
{
@@ -643,7 +644,11 @@ namespace vcpkg
std::vector<const Toolset*> candidates = Util::element_pointers(vs_toolsets);
const auto tsv = prebuildinfo.platform_toolset.get();
- const auto vsp = prebuildinfo.visual_studio_path.get();
+ auto vsp = prebuildinfo.visual_studio_path.get();
+ if (!vsp && !default_vs_path.empty())
+ {
+ vsp = &default_vs_path;
+ }
if (tsv && vsp)
{