summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-07 22:33:07 +0800
committerruki <[email protected]>2020-12-07 22:33:07 +0800
commit83c683cb9f564d73b84750ee1691d58b6b778eed (patch)
tree4f5d369ec2ff9391af007a86ddb50e3e855c9664
parente000c9404afce3a7a793fbf6bd8579a0f132f84e (diff)
improve find_cmake
-rw-r--r--xmake/modules/detect/tools/find_cmake.lua10
-rw-r--r--xmake/modules/detect/tools/find_ninja.lua10
-rw-r--r--xmake/toolchains/msvc/check.lua2
3 files changed, 13 insertions, 9 deletions
diff --git a/xmake/modules/detect/tools/find_cmake.lua b/xmake/modules/detect/tools/find_cmake.lua
index 145a439e9..f0bb40813 100644
--- a/xmake/modules/detect/tools/find_cmake.lua
+++ b/xmake/modules/detect/tools/find_cmake.lua
@@ -42,15 +42,19 @@ function main(opt)
opt = opt or {}
if is_host("windows") then
opt.paths = "$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Kitware\\CMake;InstallDir)\\bin"
+ end
+
+ -- find program
+ local program = find_program(opt.program or "cmake", opt)
+ if not program and is_host("windows") then
local msvc = toolchain.load("msvc")
if msvc:check() then
opt.envs = toolchain.load("msvc"):runenvs() -- we attempt to find it from vstudio environments
+ opt.force = true
+ program = find_program(opt.program or "cmake", opt)
end
end
- -- find program
- local program = find_program(opt.program or "cmake", opt)
-
-- find program version
local version = nil
if program and opt and opt.version then
diff --git a/xmake/modules/detect/tools/find_ninja.lua b/xmake/modules/detect/tools/find_ninja.lua
index 055939497..797cec264 100644
--- a/xmake/modules/detect/tools/find_ninja.lua
+++ b/xmake/modules/detect/tools/find_ninja.lua
@@ -38,18 +38,18 @@ import("core.tool.toolchain")
--
function main(opt)
- -- init options
+ -- find program
opt = opt or {}
- if is_host("windows") then
+ local program = find_program(opt.program or "ninja", opt)
+ if not program and is_host("windows") then
local msvc = toolchain.load("msvc")
if msvc:check() then
opt.envs = toolchain.load("msvc"):runenvs() -- we attempt to find it from vstudio environments
+ opt.force = true
+ program = find_program(opt.program or "ninja", opt)
end
end
- -- find program
- local program = find_program(opt.program or "ninja", opt)
-
-- find program version
local version = nil
if program and opt and opt.version then
diff --git a/xmake/toolchains/msvc/check.lua b/xmake/toolchains/msvc/check.lua
index 52109b76a..33cfc6298 100644
--- a/xmake/toolchains/msvc/check.lua
+++ b/xmake/toolchains/msvc/check.lua
@@ -80,7 +80,7 @@ function _check_vstudio(toolchain)
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.success}%s", toolchain:arch(), vs)
else
cprint("checking for Microsoft Visual Studio (%s) version ... ${color.nothing}${text.nothing}", toolchain:arch())
- if not (opt and opt.try) then
+ if toolchain:is_plat("windows") then
print("please run:")
print(" - xmake config --vs=xxx [--vs_toolset=xxx]")
print("or - xmake global --vs=xxx")