diff options
| author | ruki <[email protected]> | 2018-04-20 23:27:27 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-04-20 14:44:45 +0800 |
| commit | 73ad98a95af63780ab1b31398f77fa762f99d61a (patch) | |
| tree | 3f6a4132e7731f5cae52510b428793669c172362 | |
| parent | f68f5f692efcf5690c7b17dd8b9b49974c1a24fa (diff) | |
support qt env for linux
| -rw-r--r-- | xmake/modules/detect/sdks/find_qt.lua | 12 | ||||
| -rw-r--r-- | xmake/rules/qt/load.lua | 35 |
2 files changed, 38 insertions, 9 deletions
diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua index 3179bf0fa..93a524ca0 100644 --- a/xmake/modules/detect/sdks/find_qt.lua +++ b/xmake/modules/detect/sdks/find_qt.lua @@ -89,11 +89,11 @@ function _find_qt(sdkdir, sdkver) -- get includedirs local includedirs = {path.join(sdkdir, "include")} - -- get version - local version = sdkver or sdkdir:match("(%d+%.?%d*%.?%d*.-)") + -- get sdk version + sdkver = sdkver or sdkdir:match("(%d+%.?%d*%.?%d*.-)") -- get toolchains - return {sdkdir = sdkdir, bindir = bindir, linkdirs = linkdirs, includedirs = includedirs, version = version} + return {sdkdir = sdkdir, bindir = bindir, linkdirs = linkdirs, includedirs = includedirs, sdkver = sdkver} end -- find qt sdk toolchains @@ -101,7 +101,7 @@ end -- @param sdkdir the qt sdk directory -- @param opt the argument options, .e.g {verbose = true, force = false, version = "5.9.1"} -- --- @return the qt sdk toolchains. .e.g {version = ..., sdkdir = ..., bindir = .., linkdirs = ..., includedirs = ..., .. } +-- @return the qt sdk toolchains. .e.g {sdkver = ..., sdkdir = ..., bindir = .., linkdirs = ..., includedirs = ..., .. } -- -- @code -- @@ -125,12 +125,14 @@ function main(sdkdir, opt) 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 + -- save to config config.set("qt_dir", qt.sdkdir, {force = true, readonly = true}) + config.set("qt_sdkver", qt.sdkver, {force = true, readonly = true}) -- trace if opt.verbose or option.get("verbose") then cprint("checking for the Qt SDK directory ... ${green}%s", qt.sdkdir) + cprint("checking for the Qt SDK version ... ${green}%s", qt.sdkver) end else diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 8e42b3431..2847f2b52 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -22,6 +22,14 @@ -- @file load.lua -- +-- make link for framework +function _link(framework, major) + if major and framework:startswith("Qt") then + framework = "Qt" .. major .. framework:sub(3) + end + return framework +end + -- the main entry function main(target, opt) @@ -31,11 +39,22 @@ function main(target, opt) -- check qt sdk local qt = target:data("qt") + -- get major version + local major = nil + if qt.sdkver then + major = qt.sdkver:split('%.')[1] + end + -- set kind if opt.kind then target:set("kind", opt.kind) end + -- add -fPIC + target:add("cxflags", "-fPIC") + target:add("mxflags", "-fPIC") + target:add("asflags", "-fPIC") + -- need c++11 target:set("languages", "cxx11") @@ -68,21 +87,29 @@ function main(target, opt) -- add defines target:add("defines", "QT_" .. framework:sub(3):upper() .. "_LIB") - -- add includedirs for macosx + -- add includedirs if is_plat("macosx") then target:add("includedirs", path.join(qt.sdkdir, "lib/" .. framework .. ".framework/Headers")) + elseif is_plat("linux") then + target:add("links", _link(framework, major)) + target:add("includedirs", path.join(qt.sdkdir, "include/" .. framework)) end end end - -- add includedirs, linkdirs for macosx + -- add includedirs, linkdirs if is_plat("macosx") then - target:add("frameworkdirs", qt.linkdirs) target:add("frameworks", "DiskArbitration", "IOKit") + target:add("frameworkdirs", qt.linkdirs) target:add("includedirs", path.join(qt.sdkdir, "mkspecs/macx-clang")) + target:add("linkdirs", qt.linkdirs) target:add("rpathdirs", "@executable_path/Frameworks", qt.linkdirs) - else + elseif is_plat("linux") then target:set("frameworks", nil) + target:add("includedirs", path.join(qt.sdkdir, "include")) + target:add("includedirs", path.join(qt.sdkdir, "mkspecs/linux-g++")) + target:add("rpathdirs", qt.linkdirs) + target:add("linkdirs", qt.linkdirs) end end |
