summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-02-05 22:34:56 +0800
committerruki <[email protected]>2021-02-06 16:10:15 +0800
commitebef554d2785e983bd8e7405f08d93f9a289ecc9 (patch)
treea4dc752386e20f17609d1244f1ea3f40a2213b36
parent951d1fe16413156b9315d1ffb5a52e0378ed7bcd (diff)
add missing qt include dirs
-rw-r--r--CHANGELOG.md8
-rw-r--r--xmake/rules/qt/load.lua57
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")