diff options
| author | carols <[email protected]> | 2020-03-23 23:49:47 +0800 |
|---|---|---|
| committer | carols <[email protected]> | 2020-03-23 23:49:47 +0800 |
| commit | 7e8c09127594572bdf01127d14d5bd090b0c26f1 (patch) | |
| tree | 427cbc459eabf9248f7e4438782b312498bc6453 | |
| parent | 10297381b8d2efb071247d07ece52d8d418abb1d (diff) | |
add private includedirs for macos
| -rw-r--r-- | xmake/rules/qt/load.lua | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index e4c96e5ef..cfc297cfa 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -166,29 +166,34 @@ function main(target, opt) -- translate qt frameworks if framework:startswith("Qt") then - + -- add private includedirs if (framework:lower():endswith("private")) then - -- add private includedirs - print("private") + local private_dir = framework:sub(1, -string.len("private") - 1); if is_plat("macosx") then - print("macosx") + local frameworkdir = path.join(qt.sdkdir, "lib", framework .. ".framework") + if os.isdir(frameworkdir) then + target:add("includedirs", path.join(frameworkdir, "Headers", qt.sdkver)) + target:add("includedirs", path.join(frameworkdir, "Headers", qt.sdkver, private_dir)) + else + target:add("includedirs", path.join(qt.sdkdir, "include", private_dir, qt.sdkver, private_dir)) + target:add("includedirs", path.join(qt.sdkdir, "include", private_dir, qt.sdkver)) + end else - local private_dir = framework:sub(1, -string.len("private") - 1); target:add("includedirs", path.join(qt.sdkdir, "include", private_dir, qt.sdkver, private_dir)) target:add("includedirs", path.join(qt.sdkdir, "include", private_dir, qt.sdkver)) end else - -- add defines - target:add("defines", "QT_" .. framework:sub(3):upper() .. "_LIB") + -- add defines + target:add("defines", "QT_" .. framework:sub(3):upper() .. "_LIB") - -- add includedirs - if is_plat("macosx") then - local frameworkdir = path.join(qt.sdkdir, "lib", framework .. ".framework") - if os.isdir(frameworkdir) then - target:add("includedirs", path.join(frameworkdir, "Headers")) - useframeworks = true - else - target:add("syslinks", _link(framework, major)) + -- add includedirs + if is_plat("macosx") then + local frameworkdir = path.join(qt.sdkdir, "lib", framework .. ".framework") + if os.isdir(frameworkdir) then + target:add("includedirs", path.join(frameworkdir, "Headers")) + useframeworks = true + else + target:add("syslinks", _link(framework, major)) target:add("includedirs", path.join(qt.sdkdir, "include", framework)) end else @@ -199,6 +204,18 @@ function main(target, opt) end end + -- remove private frameworks + local local_frameworks = {} + local index = 1 + for _, framework in ipairs(target:get("frameworks")) do + if not framework:lower():endswith("private") then + local_frameworks[index] = framework + index = index + 1 + end + end + + target:set("frameworks", local_frameworks) + -- add some static third-party links if exists, e.g. libqtmain.a, libqtfreetype.q, libqtlibpng.a -- and exclude qt framework libraries, e.g. libQt5xxx.a, Qt5xxx.lib target:add("syslinks", _find_static_links_3rd(qt.linkdirs, major, is_plat("windows") and "qt*.lib" or "libqt*.a")) |
