diff options
| author | ruanc <[email protected]> | 2026-01-11 12:54:50 +0800 |
|---|---|---|
| committer | ruanc <[email protected]> | 2026-01-11 12:54:50 +0800 |
| commit | 9ba7ce6c2221beaeac76b66959cd990918934ff0 (patch) | |
| tree | 99745f4fe1063834f7a31e905a1d37d291a0eb98 | |
| parent | 98b400ca2ed607695b65905044446c3946489fe5 (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.lua | 13 |
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 |
