xmake.lua 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. add_rules("mode.debug", "mode.release")
  2. set_languages("cxx11")
  3. option("glfw", {showmenu = true, default = false})
  4. option("opengl2", {showmenu = true, default = false})
  5. option("opengl3", {showmenu = true, default = false})
  6. option("sdl2", {showmenu = true, default = false})
  7. option("vulkan", {showmenu = true, default = false})
  8. option("freetype", {showmenu = true, default = false})
  9. option("wchar32", {showmenu = true, default = false})
  10. if has_config("glfw") then
  11. add_requires("glfw")
  12. end
  13. if has_config("sdl2") then
  14. add_requires("libsdl")
  15. end
  16. if has_config("vulkan") then
  17. add_requires("vulkansdk")
  18. end
  19. if has_config("freetype") then
  20. add_requires("freetype")
  21. end
  22. target("cimgui")
  23. set_kind("$(kind)")
  24. add_files("cimgui.cpp", "imgui/*.cpp")
  25. add_includedirs("imgui")
  26. add_headerfiles("cimgui.h", "generator/output/cimgui_impl.h")
  27. add_defines("IMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
  28. if is_kind("static") then
  29. add_defines("IMGUI_IMPL_API=extern \"C\" ")
  30. else
  31. add_defines("IMGUI_IMPL_API=extern \"C\" __declspec(dllexport)")
  32. end
  33. if has_config("glfw") then
  34. add_files("imgui/backends/imgui_impl_glfw.cpp")
  35. add_headerfiles("imgui/(backends/imgui_impl_glfw.h)")
  36. add_packages("glfw")
  37. end
  38. if has_config("opengl2") then
  39. add_files("imgui/backends/imgui_impl_opengl2.cpp")
  40. add_headerfiles("imgui/(backends/imgui_impl_opengl2.h)")
  41. end
  42. if has_config("opengl3") then
  43. add_files("imgui/backends/imgui_impl_opengl3.cpp")
  44. add_headerfiles("imgui/(backends/imgui_impl_opengl3.h)")
  45. add_headerfiles("imgui/(backends/imgui_impl_opengl3_loader.h)")
  46. end
  47. if has_config("sdl2") then
  48. if os.exists("imgui/backends/imgui_impl_sdl2.cpp") then
  49. add_files("imgui/backends/imgui_impl_sdl2.cpp")
  50. add_headerfiles("imgui/(backends/imgui_impl_sdl2.h)")
  51. else
  52. add_files("imgui/backends/imgui_impl_sdl.cpp")
  53. add_headerfiles("imgui/(backends/imgui_impl_sdl.h)")
  54. end
  55. add_packages("libsdl")
  56. end
  57. if has_config("vulkan") then
  58. add_files("imgui/backends/imgui_impl_vulkan.cpp")
  59. add_headerfiles("imgui/(backends/imgui_impl_vulkan.h)")
  60. add_packages("vulkansdk")
  61. end
  62. if has_config("freetype") then
  63. add_files("imgui/misc/freetype/imgui_freetype.cpp")
  64. add_headerfiles("imgui/misc/freetype/imgui_freetype.h")
  65. add_packages("freetype")
  66. add_defines("IMGUI_ENABLE_FREETYPE")
  67. end
  68. if has_config("wchar32") then
  69. add_defines("IMGUI_USE_WCHAR32")
  70. end
  71. after_install(function (target)
  72. local config_file = path.join(target:installdir(), "include/imconfig.h")
  73. if has_config("wchar32") then
  74. io.gsub(config_file, "//#define IMGUI_USE_WCHAR32", "#define IMGUI_USE_WCHAR32")
  75. end
  76. if has_config("freetype") then
  77. io.gsub(config_file, "//#define IMGUI_ENABLE_FREETYPE", "#define IMGUI_ENABLE_FREETYPE")
  78. end
  79. end)