Extra2D/xmake/engine.lua

78 lines
3.0 KiB
Lua

-- ==============================================
-- Extra2D 引擎库共享配置
-- 被主项目和示例共享使用
--
-- 窗口后端: GLFW
-- 渲染后端: OpenGL
-- ==============================================
-- 获取当前平台
local function get_current_plat()
return get_config("plat") or os.host()
end
-- 定义 Extra2D 引擎库目标
function define_extra2d_engine()
target("extra2d")
set_kind("static")
-- 引擎核心源文件(后端无关)
add_files("Extra2D/src/**.cpp|platform/backends/**.cpp|graphics/opengl/**.cpp")
-- OpenGL 渲染后端源文件
add_files("Extra2D/src/graphics/opengl/*.cpp")
add_files("Extra2D/src/glad/glad.c")
-- GLFW 窗口后端源文件
add_files("Extra2D/src/platform/glfw/*.cpp")
-- 头文件路径
add_includedirs("Extra2D/include", {public = true})
add_includedirs("Extra2D/include/extra2d/platform", {public = true})
-- 平台配置
local plat = get_current_plat()
if plat == "switch" then
-- Nintendo Switch 平台配置
local devkitPro = os.getenv("DEVKITPRO") or "C:/devkitPro"
add_includedirs(devkitPro .. "/portlibs/switch/include", {public = true})
add_linkdirs(devkitPro .. "/portlibs/switch/lib")
-- GLFW 后端
add_syslinks("glfw", "GLESv2", "EGL", "glapi", "drm_nouveau", "nx", "m",
{public = true})
elseif plat == "mingw" or plat == "windows" then
-- Windows (MinGW) 平台配置
add_packages("glm", "nlohmann_json", "glfw", {public = true})
add_syslinks("opengl32", "glu32", "winmm", "imm32", "version", "setupapi",
{public = true})
elseif plat == "linux" then
-- Linux 平台配置
add_packages("glm", "nlohmann_json", "glfw", {public = true})
add_syslinks("GL", "dl", "pthread", {public = true})
elseif plat == "macosx" then
-- macOS 平台配置
add_packages("glm", "nlohmann_json", "glfw", {public = true})
add_frameworks("OpenGL", "Cocoa", "IOKit", "CoreVideo", {public = true})
end
-- 编译器标志 (C 和 C++ 共用)
add_cxflags("-Wall", "-Wextra", {force = true})
add_cxflags("-Wno-unused-variable", "-Wno-unused-function", "-Wno-unused-parameter", {force = true})
add_cxflags("-Wno-strict-aliasing", "-Wno-implicit-fallthrough", {force = true})
add_cxflags("-Wno-missing-field-initializers", {force = true})
-- C++ 专用编译器标志
add_cxxflags("-Wno-deprecated-copy", "-Wno-class-memaccess", {force = true})
if is_mode("debug") then
add_defines("E2D_DEBUG", "_DEBUG", {public = true})
add_cxxflags("-O0", "-g", {force = true})
else
add_defines("NDEBUG", {public = true})
add_cxxflags("-O2", {force = true})
end
target_end()
end