diff options
| author | ruki <[email protected]> | 2021-02-05 22:34:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-02-06 16:10:15 +0800 |
| commit | ebef554d2785e983bd8e7405f08d93f9a289ecc9 (patch) | |
| tree | a4dc752386e20f17609d1244f1ea3f40a2213b36 | |
| parent | 951d1fe16413156b9315d1ffb5a52e0378ed7bcd (diff) | |
add missing qt include dirs
| -rw-r--r-- | CHANGELOG.md | 8 | ||||
| -rw-r--r-- | xmake/rules/qt/load.lua | 57 |
2 files changed, 44 insertions, 21 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb97c67e..6bf62432b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ * [#1216](https://github.com/xmake-io/xmake/issues/1216): Pass custom configuration scripts to xrepo * Add linuxos builtin module to get linux system information +### Change + +* [#1226](https://github.com/xmake-io/xmake/issues/1226): Add missing qt include directories + ### Bugs fixed * [#1219](https://github.com/xmake-io/xmake/issues/1219): Fix version check and update @@ -922,6 +926,10 @@ * [#1216](https://github.com/xmake-io/xmake/issues/1216): 传递自定义 includes 脚本给 xrepo * 添加 linuxos 内置模块获取 linux 系统信息 +### 改进 + +* [#1226](https://github.com/xmake-io/xmake/issues/1226): 添加缺失的 Qt 头文件搜索路径 + ### Bugs 修复 * [#1219](https://github.com/xmake-io/xmake/issues/1219): 修复版本检测和更新 diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 5962fcd89..4668bda7b 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -84,6 +84,15 @@ function _add_plugins(target, plugins) end end +-- add includedirs if exists +function _add_includedirs(target, includedirs) + for _, includedir in ipairs(includedirs) do + if os.isdir(includedir) then + target:add("includedirs", includedir) + end + end +end + -- the main entry function main(target, opt) @@ -184,15 +193,15 @@ function main(target, opt) if is_plat("macosx") then local frameworkdir = path.join(qt.libdir, 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)) + _add_includedirs(target, path.join(frameworkdir, "Headers", qt.sdkver)) + _add_includedirs(target, path.join(frameworkdir, "Headers", qt.sdkver, private_dir)) else - target:add("includedirs", path.join(qt.includedir, private_dir, qt.sdkver, private_dir)) - target:add("includedirs", path.join(qt.includedir, private_dir, qt.sdkver)) + _add_includedirs(target, path.join(qt.includedir, private_dir, qt.sdkver, private_dir)) + _add_includedirs(target, path.join(qt.includedir, private_dir, qt.sdkver)) end else - target:add("includedirs", path.join(qt.includedir, private_dir, qt.sdkver, private_dir)) - target:add("includedirs", path.join(qt.includedir, private_dir, qt.sdkver)) + _add_includedirs(target, path.join(qt.includedir, private_dir, qt.sdkver, private_dir)) + _add_includedirs(target, path.join(qt.includedir, private_dir, qt.sdkver)) end else -- add defines @@ -202,15 +211,21 @@ function main(target, opt) if is_plat("macosx") then local frameworkdir = path.join(qt.libdir, framework .. ".framework") if os.isdir(frameworkdir) and not framework:endswith("Support") then - target:add("includedirs", path.join(frameworkdir, "Headers")) + _add_includedirs(target, path.join(frameworkdir, "Headers")) + -- e.g. QtGui.framework/Headers/5.15.0/QtGui/qpa/qplatformopenglcontext.h + -- https://github.com/xmake-io/xmake/issues/1226 + _add_includedirs(target, path.join(frameworkdir, "Headers", qt.sdkver, framework)) useframeworks = true else target:add("syslinks", _link(qt.libdir, framework, qt_sdkver)) - target:add("includedirs", path.join(qt.includedir, framework)) + _add_includedirs(target, path.join(qt.includedir, framework)) + -- e.g. QtGui/5.15.0/QtGui/qpa/qplatformopenglcontext.h + _add_includedirs(target, path.join(qt.includedir, framework, qt.sdkver, framework)) end else target:add("syslinks", _link(qt.libdir, framework, qt_sdkver)) - target:add("includedirs", path.join(qt.includedir, framework)) + _add_includedirs(target, path.join(qt.includedir, framework)) + _add_includedirs(target, path.join(qt.includedir, framework, qt.sdkver, framework)) end end end @@ -245,7 +260,7 @@ function main(target, opt) target:add("rpathdirs", "@executable_path/Frameworks", qt.libdir) else target:add("rpathdirs", qt.libdir) - target:add("includedirs", qt.includedir) + _add_includedirs(target, qt.includedir) -- remove qt frameworks local frameworks = table.wrap(target:get("frameworks")) @@ -257,36 +272,36 @@ function main(target, opt) end target:set("frameworks", frameworks) end - target:add("includedirs", path.join(qt.mkspecsdir, "macx-clang")) + _add_includedirs(target, path.join(qt.mkspecsdir, "macx-clang")) target:add("linkdirs", qt.libdir) elseif is_plat("linux") then target:set("frameworks", nil) - target:add("includedirs", qt.includedir) - target:add("includedirs", path.join(qt.mkspecsdir, "linux-g++")) + _add_includedirs(target, qt.includedir) + _add_includedirs(target, path.join(qt.mkspecsdir, "linux-g++")) target:add("rpathdirs", qt.libdir) target:add("linkdirs", qt.libdir) elseif is_plat("windows") then target:set("frameworks", nil) - target:add("includedirs", qt.includedir) - target:add("includedirs", path.join(qt.mkspecsdir, "win32-msvc")) + _add_includedirs(target, qt.includedir) + _add_includedirs(target, path.join(qt.mkspecsdir, "win32-msvc")) target:add("linkdirs", qt.libdir) target:add("syslinks", "ws2_32", "gdi32", "ole32", "advapi32", "shell32", "user32", "OpenGL32", "imm32", "winmm", "iphlpapi") elseif is_plat("mingw") then target:set("frameworks", nil) - target:add("includedirs", qt.includedir) - target:add("includedirs", path.join(qt.mkspecsdir, "win32-g++")) + _add_includedirs(target, qt.includedir) + _add_includedirs(target, path.join(qt.mkspecsdir, "win32-g++")) target:add("linkdirs", qt.libdir) target:add("syslinks", "mingw32") elseif is_plat("android") then target:set("frameworks", nil) - target:add("includedirs", qt.includedir) - target:add("includedirs", path.join(qt.mkspecsdir, "android-clang")) + _add_includedirs(target, qt.includedir) + _add_includedirs(target, path.join(qt.mkspecsdir, "android-clang")) target:add("rpathdirs", qt.libdir) target:add("linkdirs", qt.libdir) elseif is_plat("wasm") then target:set("frameworks", nil) - target:add("includedirs", qt.includedir) - target:add("includedirs", path.join(qt.mkspecsdir, "wasm-emscripten")) + _add_includedirs(target, qt.includedir) + _add_includedirs(target, path.join(qt.mkspecsdir, "wasm-emscripten")) target:add("rpathdirs", qt.libdir) target:add("linkdirs", qt.libdir) target:add("ldflags", "-s WASM=1", "-s FETCH=1", "-s FULL_ES2=1", "-s FULL_ES3=1", "-s USE_WEBGL2=1", "--bind") |
