xmake.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package("qt6lib")
  2. set_kind("template")
  3. set_homepage("https://www.qt.io")
  4. set_description("Qt is the faster, smarter way to create innovative devices, modern UIs & applications for multiple screens. Cross-platform software development at its best.")
  5. set_license("LGPL-3")
  6. add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
  7. add_configs("vs_runtime", {description = "Set vs compiler runtime.", default = "MD", readonly = true})
  8. add_versions("6.3.0", "dummy")
  9. add_versions("6.5.0", "dummy")
  10. add_versions("6.5.1", "dummy")
  11. add_versions("6.5.2", "dummy")
  12. add_versions("6.5.3", "dummy")
  13. add_versions("6.6.0", "dummy")
  14. on_load(function (package)
  15. package:add("deps", "qt6base", {debug = package:is_debug(), version = package:version_str()})
  16. end)
  17. on_fetch(function (package)
  18. local qt = package:dep("qt6base"):fetch()
  19. if not qt then
  20. return
  21. end
  22. local libname = assert(package:data("libname"), "this package must not be used directly")
  23. local links = table.wrap(package:data("links"))
  24. local includedirs = {qt.includedir}
  25. local linkname
  26. local frameworks
  27. if package:is_plat("windows") then
  28. linkname = "Qt6" .. libname
  29. if package:is_debug() then
  30. linkname = linkname .. "d"
  31. end
  32. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  33. elseif package:is_plat("android") then
  34. linkname = "Qt6" .. libname
  35. if package:is_arch("x86_64", "x64") then
  36. linkname = linkname .. "_x86_64"
  37. elseif package:is_arch("arm64", "arm64-v8a") then
  38. linkname = linkname .. "_arm64-v8a"
  39. elseif package:is_arch("armv7", "armeabi-v7a", "armeabi", "armv7-a", "armv5te") then
  40. linkname = linkname .. "_armeabi-v7a"
  41. elseif package:is_arch("x86") then
  42. linkname = linkname .. "_x86"
  43. end
  44. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  45. elseif package:is_plat("macosx") then
  46. table.insert(includedirs, path.join(qt.libdir, "Qt" .. libname .. ".framework", "Headers"))
  47. frameworks = "Qt" .. libname
  48. else
  49. linkname = "Qt6" .. libname
  50. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  51. end
  52. table.insert(links, 1, linkname)
  53. if frameworks then
  54. table.join2(frameworks, package:data("frameworks"))
  55. else
  56. frameworks = package:data("frameworks")
  57. end
  58. return {
  59. qtdir = qt,
  60. version = qt.version,
  61. includedirs = includedirs,
  62. links = links,
  63. linkdirs = qt.libdir,
  64. frameworks = frameworks,
  65. frameworkdirs = qt.libdir,
  66. syslinks = package:data("syslinks")
  67. }
  68. end)
  69. on_install("windows|x64", "linux|x86_64", "macosx|x86_64", "mingw|x86_64", function (package)
  70. local qt = package:dep("qt6base"):data("qt")
  71. assert(qt, "qt6base is required")
  72. end)