xmake.lua 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package("imguizmo")
  2. set_homepage("https://github.com/CedricGuillemet/ImGuizmo")
  3. set_description("Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui")
  4. set_license("MIT")
  5. add_urls("https://github.com/CedricGuillemet/ImGuizmo.git")
  6. add_versions("1.83", "664cf2d73864a36b2a8b5091d33fc4578c885eca")
  7. add_versions("1.89+wip", "82e2465b8d029e2d85002905cc4ed5087e2119fe")
  8. add_versions("1.91.3+wip", "bcdd86bb8a8019b373e46921c52ef7f2fdaa8b16")
  9. on_load(function (package)
  10. if package:gitref() or package:version():ge("1.90") then
  11. package:add("deps", "imgui")
  12. else
  13. package:add("deps", "imgui <=1.89.3")
  14. end
  15. end)
  16. on_install("macosx", "linux", "windows", "mingw", "android", "iphoneos", function (package)
  17. local imgui = package:dep("imgui")
  18. local configs = imgui:requireinfo().configs
  19. if configs then
  20. configs = string.serialize(configs, {strip = true, indent = false})
  21. end
  22. local xmake_lua = ([[
  23. add_rules("mode.debug", "mode.release")
  24. set_languages("c++14")
  25. add_requires("imgui %s", {configs = %s})
  26. target("imguizmo")
  27. set_kind("$(kind)")
  28. add_defines("IMGUI_DEFINE_MATH_OPERATORS")
  29. add_files("*.cpp")
  30. add_headerfiles("*.h")
  31. add_packages("imgui")
  32. if is_plat("windows") and is_kind("shared") then
  33. add_rules("utils.symbols.export_all", {export_classes = true})
  34. end
  35. ]]):format(imgui:version_str(), configs)
  36. io.writefile("xmake.lua", xmake_lua)
  37. import("package.tools.xmake").install(package)
  38. end)
  39. on_test(function (package)
  40. assert(package:check_cxxsnippets({test = [[
  41. void test() {
  42. ImGuiIO& io = ImGui::GetIO();
  43. ImGuizmo::SetRect(0, 0, io.DisplaySize.x, io.DisplaySize.y);
  44. }
  45. ]]}, {configs = {languages = "c++11"}, includes = {"imgui.h", "ImGuizmo.h"}}))
  46. end)