xmake.lua 3.1 KB

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