From ce65d3bdeb6f4a450a0a6e0d1a51e54daccd69c8 Mon Sep 17 00:00:00 2001 From: RC1844 <1844766234@qq.com> Date: Sat, 10 Jan 2026 23:57:32 +0800 Subject: fix:qt mkspecsdir Fix the qt mkspecsdir path --- xmake/modules/detect/sdks/find_qt.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'xmake/modules') diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua index 8935be2c6..c47fc3f69 100644 --- a/xmake/modules/detect/sdks/find_qt.lua +++ b/xmake/modules/detect/sdks/find_qt.lua @@ -286,7 +286,7 @@ function _find_qt(sdkdir, sdkver, sdkdir_host) local libdir = qtenvs.QT_INSTALL_LIBS local pluginsdir = qtenvs.QT_INSTALL_PLUGINS local includedir = qtenvs.QT_INSTALL_HEADERS - local mkspecsdir = qtenvs.QMAKE_MKSPECS or path.join(qtenvs.QT_INSTALL_ARCHDATA, "mkspecs") + local mkspecsdir = qtenvs.QMAKE_MKSPECS or path.join(qtenvs.QT_HOST_DATA, "mkspecs") -- for 6.2 local bindir_host = qtenvs.QT_HOST_BINS if not bindir_host and libexecdir and is_plat("android", "iphoneos") then -- cgit v1.3.1 From 98b400ca2ed607695b65905044446c3946489fe5 Mon Sep 17 00:00:00 2001 From: ruanc <1844766234@qq.com> Date: Sun, 11 Jan 2026 00:15:21 +0800 Subject: feat(qt): support dynamic mkspec selection for Qt SDK - Add mkspec variable to store QMAKE_XSPEC or QMAKE_SPEC from Qt environment - Include mkspec in the returned Qt SDK information table - Use dynamic mkspec path instead of hardcoded platform-specific paths - Remove hardcoded mkspec directory paths for macosx, linux, windows, android and wasm platforms - Add include directories using the dynamic mkspec path for proper Qt compilation --- xmake/modules/detect/sdks/find_qt.lua | 3 ++- xmake/rules/qt/load.lua | 7 +------ 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'xmake/modules') diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua index c47fc3f69..e0aa3b03d 100644 --- a/xmake/modules/detect/sdks/find_qt.lua +++ b/xmake/modules/detect/sdks/find_qt.lua @@ -287,6 +287,7 @@ function _find_qt(sdkdir, sdkver, sdkdir_host) local pluginsdir = qtenvs.QT_INSTALL_PLUGINS local includedir = qtenvs.QT_INSTALL_HEADERS local mkspecsdir = qtenvs.QMAKE_MKSPECS or path.join(qtenvs.QT_HOST_DATA, "mkspecs") + local mkspec = qtenvs.QMAKE_XSPEC or qtenvs.QMAKE_SPEC -- for 6.2 local bindir_host = qtenvs.QT_HOST_BINS if not bindir_host and libexecdir and is_plat("android", "iphoneos") then @@ -316,7 +317,7 @@ function _find_qt(sdkdir, sdkver, sdkdir_host) end end - return {sdkdir = sdkdir, bindir = bindir, bindir_host = bindir_host, libexecdir = libexecdir, libexecdir_host = libexecdir_host, libdir = libdir, includedir = includedir, qmldir = qmldir, pluginsdir = pluginsdir, mkspecsdir = mkspecsdir, sdkver = sdkver} + return {sdkdir = sdkdir, bindir = bindir, bindir_host = bindir_host, libexecdir = libexecdir, libexecdir_host = libexecdir_host, libdir = libdir, includedir = includedir, qmldir = qmldir, pluginsdir = pluginsdir, mkspecsdir = mkspecsdir, mkspec = mkspec, sdkver = sdkver} end -- find qt sdk toolchains diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 9fc204174..53b5a1ba2 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -414,6 +414,7 @@ function main(target, opt) end -- add includedirs, linkdirs + _add_includedirs(target, path.join(qt.mkspecsdir, qt.mkspec)) if target:is_plat("macosx") then target:add("frameworks", "DiskArbitration", "IOKit", "CoreFoundation", "CoreGraphics", "OpenGL") target:add("frameworks", "Carbon", "Foundation", "AppKit", "Security", "SystemConfiguration") @@ -434,18 +435,15 @@ function main(target, opt) target:set("frameworks", frameworks) end _add_includedirs(target, qt.includedir) - _add_includedirs(target, path.join(qt.mkspecsdir, "macx-clang")) target:add("linkdirs", qt.libdir) elseif target:is_plat("linux") then target:set("frameworks", nil) _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 target:is_plat("windows") then target:set("frameworks", nil) _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") -- for debugger, https://github.com/xmake-io/xmake-vscode/issues/225 @@ -469,19 +467,16 @@ function main(target, opt) else _add_includedirs(target, qt.includedir) end - _add_includedirs(target, path.join(qt.mkspecsdir, "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) - _add_includedirs(target, path.join(qt.mkspecsdir, "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) - _add_includedirs(target, path.join(qt.mkspecsdir, "wasm-emscripten")) target:add("rpathdirs", qt.libdir) target:add("linkdirs", qt.libdir) -- add prebuilt object files in qt sdk. -- cgit v1.3.1