summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruanc <[email protected]>2026-01-11 12:54:50 +0800
committerruanc <[email protected]>2026-01-11 12:54:50 +0800
commit9ba7ce6c2221beaeac76b66959cd990918934ff0 (patch)
tree99745f4fe1063834f7a31e905a1d37d291a0eb98
parent98b400ca2ed607695b65905044446c3946489fe5 (diff)
feat(qt): add fallback mkspec support for different platforms
- Introduce fallbackmkspec variable to handle mkspec selection - Set platform-specific fallback mkspec values: - macosx: macx-clang - linux: linux-g++ - windows: win32-msvc - mingw: win32-g++ - android: android-clang - wasm: wasm-emscripten - Implement conditional logic to use qt.mkspec when available, otherwise fall back to platform-specific mkspec - Maintain backward compatibility with existing mkspec usage
-rw-r--r--xmake/rules/qt/load.lua13
1 files changed, 12 insertions, 1 deletions
diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua
index 53b5a1ba2..252e6db5b 100644
--- a/xmake/rules/qt/load.lua
+++ b/xmake/rules/qt/load.lua
@@ -414,7 +414,7 @@ function main(target, opt)
end
-- add includedirs, linkdirs
- _add_includedirs(target, path.join(qt.mkspecsdir, qt.mkspec))
+ local fallbackmkspec = ""
if target:is_plat("macosx") then
target:add("frameworks", "DiskArbitration", "IOKit", "CoreFoundation", "CoreGraphics", "OpenGL")
target:add("frameworks", "Carbon", "Foundation", "AppKit", "Security", "SystemConfiguration")
@@ -435,15 +435,18 @@ function main(target, opt)
target:set("frameworks", frameworks)
end
_add_includedirs(target, qt.includedir)
+ fallbackmkspec = "macx-clang"
target:add("linkdirs", qt.libdir)
elseif target:is_plat("linux") then
target:set("frameworks", nil)
_add_includedirs(target, qt.includedir)
+ fallbackmkspec = "linux-g++"
target:add("rpathdirs", qt.libdir)
target:add("linkdirs", qt.libdir)
elseif target:is_plat("windows") then
target:set("frameworks", nil)
_add_includedirs(target, qt.includedir)
+ fallbackmkspec = "win32-msvc"
target:add("linkdirs", qt.libdir)
target:add("syslinks", "ws2_32", "gdi32", "ole32", "advapi32", "shell32", "user32", "opengl32", "imm32", "winmm", "iphlpapi")
-- for debugger, https://github.com/xmake-io/xmake-vscode/issues/225
@@ -467,16 +470,19 @@ function main(target, opt)
else
_add_includedirs(target, qt.includedir)
end
+ fallbackmkspec = "win32-g++"
target:add("linkdirs", qt.libdir)
target:add("syslinks", "mingw32", "ws2_32", "gdi32", "ole32", "advapi32", "shell32", "user32", "iphlpapi")
elseif target:is_plat("android") then
target:set("frameworks", nil)
_add_includedirs(target, qt.includedir)
+ fallbackmkspec = "android-clang"
target:add("rpathdirs", qt.libdir)
target:add("linkdirs", qt.libdir)
elseif target:is_plat("wasm") then
target:set("frameworks", nil)
_add_includedirs(target, qt.includedir)
+ fallbackmkspec = "wasm-emscripten"
target:add("rpathdirs", qt.libdir)
target:add("linkdirs", qt.libdir)
-- add prebuilt object files in qt sdk.
@@ -510,6 +516,11 @@ function main(target, opt)
target:add("shflags", "-s EXPORTED_RUNTIME_METHODS=[\"UTF16ToString\",\"stringToUTF16\"]")
end
end
+ if qt.mkspec then
+ _add_includedirs(target, path.join(qt.mkspecsdir, qt.mkspec))
+ else
+ _add_includedirs(target, path.join(qt.mkspecsdir, fallbackmkspec))
+ end
-- is gui application?
if opt.gui then