summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-04-20 22:49:35 +0800
committerruki <[email protected]>2018-04-20 10:57:34 +0800
commita16e302881ed8637454c10a8f2db8d3e0f449d8a (patch)
treef260b93efd6507da7e047bf9be615408662fa0d0
parent23644d9e3acaea9fd773a03f23dd9c2d0b937797 (diff)
improve find_qt for linux
-rw-r--r--xmake/modules/detect/sdks/find_qt.lua45
-rw-r--r--xmake/platforms/linux/xmake.lua4
-rw-r--r--xmake/platforms/macosx/xmake.lua5
3 files changed, 38 insertions, 16 deletions
diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua
index 04f3041af..3179bf0fa 100644
--- a/xmake/modules/detect/sdks/find_qt.lua
+++ b/xmake/modules/detect/sdks/find_qt.lua
@@ -30,32 +30,49 @@ import("core.base.global")
import("core.project.config")
-- find qt sdk directory
-function _find_sdkdir(sdkdir)
+function _find_sdkdir(sdkdir, sdkver)
+
+ -- init sub-directory
+ local subdir = sdkver or "**"
+
+ -- append target sub-directory
+ local targetdir = nil
+ if is_plat("linux") then
+ targetdir = is_arch("x86_64") and "gcc_64" or "gcc_32"
+ elseif is_plat("macosx") then
+ targetdir = is_arch("x86_64") and "clang_64" or "clang_32"
+ elseif is_plat("android") then
+ targetdir = "android_*" -- TODO android_armv7 and ..?
+ end
+ if targetdir then
+ subdir = path.join(subdir, targetdir)
+ else
+ subdir = path.join(subdir, "**")
+ end
+ subdir = path.join(subdir, "bin")
-- init the search directories
local pathes = {}
if sdkdir then
- table.insert(pathes, path.join(sdkdir, "**", "bin"))
+ table.insert(pathes, sdkdir)
end
- if os.host() == "macosx" then
- table.insert(pathes, "~/Qt/**/bin")
- elseif os.host() == "windows" then
+ if os.host() == "windows" then
else
- table.insert(pathes, "~/Qt/**/bin")
+ table.insert(pathes, "~/Qt")
end
-- attempt to find qmake
- local qmake = find_file(os.host() == "windows" and "qmake.exe" or "qmake", pathes)
+ local qmake = find_file(os.host() == "windows" and "qmake.exe" or "qmake", pathes, {suffixes = subdir})
if qmake then
return path.directory(path.directory(qmake))
end
end
-- find qt sdk toolchains
-function _find_qt(sdkdir)
+function _find_qt(sdkdir, sdkver)
-- find qt directory
- sdkdir = _find_sdkdir(sdkdir)
+ sdkdir = _find_sdkdir(sdkdir, sdkver)
if not sdkdir or not os.isdir(sdkdir) then
return nil
end
@@ -73,7 +90,7 @@ function _find_qt(sdkdir)
local includedirs = {path.join(sdkdir, "include")}
-- get version
- local version = sdkdir:match("(%d+%.?%d*%.?%d*.-)")
+ local version = sdkver or sdkdir:match("(%d+%.?%d*%.?%d*.-)")
-- get toolchains
return {sdkdir = sdkdir, bindir = bindir, linkdirs = linkdirs, includedirs = includedirs, version = version}
@@ -82,13 +99,13 @@ end
-- find qt sdk toolchains
--
-- @param sdkdir the qt sdk directory
--- @param opt the argument options, .e.g {verbose = true, force = false}
+-- @param opt the argument options, .e.g {verbose = true, force = false, version = "5.9.1"}
--
--- @return the qt sdk toolchains. .e.g {sdkdir = ..., bindir = .., linkdirs = ..., includedirs = ..., .. }
+-- @return the qt sdk toolchains. .e.g {version = ..., sdkdir = ..., bindir = .., linkdirs = ..., includedirs = ..., .. }
--
-- @code
--
--- local toolchains = find_qt("~/Qt/5.10.1/clang_64")
+-- local toolchains = find_qt("~/Qt")
--
-- @endcode
--
@@ -105,7 +122,7 @@ function main(sdkdir, opt)
end
-- find qt
- local qt = _find_qt(sdkdir or config.get("qt_dir") or global.get("qt_dir"))
+ local qt = _find_qt(sdkdir or config.get("qt") or global.get("qt"), opt.version or config.get("qt_sdkver"))
if qt then
-- save sdk directory to config
diff --git a/xmake/platforms/linux/xmake.lua b/xmake/platforms/linux/xmake.lua
index a5a96ad7c..8a324ff2a 100644
--- a/xmake/platforms/linux/xmake.lua
+++ b/xmake/platforms/linux/xmake.lua
@@ -52,12 +52,16 @@ platform("linux")
{
{category = "Cuda SDK Configuration" }
, {nil, "cuda_dir", "kv", "auto", "The Cuda SDK Directory" }
+ , {category = "Qt SDK Configuration" }
+ , {nil, "qt", "kv", "auto", "The Qt SDK Directory" }
+ , {nil, "qt_sdkver", "kv", "auto", "The Qt SDK Version" }
}
, global =
{
{}
, {nil, "cuda_dir", "kv", "auto", "The Cuda SDK Directory" }
+ , {nil, "qt", "kv", "auto", "The Qt SDK Directory" }
}
}
diff --git a/xmake/platforms/macosx/xmake.lua b/xmake/platforms/macosx/xmake.lua
index 7cce0c77d..ed191dce8 100644
--- a/xmake/platforms/macosx/xmake.lua
+++ b/xmake/platforms/macosx/xmake.lua
@@ -57,7 +57,8 @@ platform("macosx")
, {category = "Cuda SDK Configuration" }
, {nil, "cuda_dir", "kv", "auto", "The Cuda SDK Directory" }
, {category = "Qt SDK Configuration" }
- , {nil, "qt_dir", "kv", "auto", "The Qt SDK Directory" }
+ , {nil, "qt", "kv", "auto", "The Qt SDK Directory" }
+ , {nil, "qt_sdkver", "kv", "auto", "The Qt SDK Version" }
}
, global =
@@ -65,7 +66,7 @@ platform("macosx")
{}
, {nil, "xcode_dir", "kv", "auto", "The Xcode Application Directory" }
, {nil, "cuda_dir", "kv", "auto", "The Cuda SDK Directory" }
- , {nil, "qt_dir", "kv", "auto", "The Qt SDK Directory" }
+ , {nil, "qt", "kv", "auto", "The Qt SDK Directory" }
}
}