xmake.lua 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package("qt5lib")
  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("5.15.2", "dummy")
  9. add_versions("5.12.5", "dummy")
  10. on_load(function (package)
  11. package:add("deps", "qt5base", {debug = package:is_debug(), version = package:version_str()})
  12. end)
  13. on_fetch(function (package)
  14. local qt = package:dep("qt5base"):fetch()
  15. if not qt then
  16. return
  17. end
  18. local libname = assert(package:data("libname"), "this package must not be used directly")
  19. local links = table.wrap(package:data("links"))
  20. local includedirs = {qt.includedir}
  21. local linkname
  22. local frameworks
  23. if package:is_plat("windows") then
  24. linkname = "Qt5" .. libname
  25. if package:is_debug() then
  26. linkname = linkname .. "d"
  27. end
  28. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  29. elseif package:is_plat("android") then
  30. linkname = "Qt5" .. libname
  31. if package:is_arch("x86_64", "x64") then
  32. linkname = linkname .. "_x86_64"
  33. elseif package:is_arch("arm64", "arm64-v8a") then
  34. linkname = linkname .. "_arm64-v8a"
  35. elseif package:is_arch("armv7", "armeabi-v7a", "armeabi", "armv7-a", "armv5te") then
  36. linkname = linkname .. "_armeabi-v7a"
  37. elseif package:is_arch("x86") then
  38. linkname = linkname .. "_x86"
  39. end
  40. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  41. elseif package:is_plat("macosx") then
  42. table.insert(includedirs, path.join(qt.libdir, "Qt" .. libname .. ".framework", "Versions", "5", "Headers"))
  43. frameworks = "Qt" .. libname
  44. else
  45. linkname = "Qt5" .. libname
  46. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  47. end
  48. table.insert(links, 1, linkname)
  49. if frameworks then
  50. table.join2(frameworks, package:data("frameworks"))
  51. else
  52. frameworks = package:data("frameworks")
  53. end
  54. return {
  55. qtdir = qt,
  56. version = qt.version,
  57. includedirs = includedirs,
  58. links = links,
  59. linkdirs = qt.libdir,
  60. frameworks = frameworks,
  61. frameworkdirs = qt.libdir,
  62. syslinks = package:data("syslinks")
  63. }
  64. end)
  65. on_install("windows|x86", "windows|x64", "linux", "macosx", "mingw", "android", "iphoneos", function (package)
  66. local qt = package:dep("qt5base"):fetch()
  67. assert(qt, "qt5base is required")
  68. end)