-- ============================================== -- 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") -- 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", "nx", "m", {public = true}) elseif plat == "mingw" or plat == "windows" then -- Windows (MinGW) 平台配置 add_packages("glm", "nlohmann_json", "glfw", "zstd", "lz4", "zlib", {public = true}) add_syslinks("winmm", "imm32", "version", "setupapi", {public = true}) elseif plat == "linux" then -- Linux 平台配置 add_packages("glm", "nlohmann_json", "glfw", "zstd", "lz4", "zlib", {public = true}) add_syslinks("dl", "pthread", {public = true}) elseif plat == "macosx" then -- macOS 平台配置 add_packages("glm", "nlohmann_json", "glfw", "zstd", "lz4", "zlib", {public = true}) add_frameworks("Cocoa", "IOKit", "CoreVideo", {public = true}) end -- 启用压缩库 add_defines("E2D_USE_ZSTD", "E2D_USE_LZ4", "E2D_USE_ZLIB", {public = true}) -- 编译器标志 (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("_DEBUG", {public = true}) add_cxxflags("-O0", "-g", {force = true}) else add_defines("NDEBUG", {public = true}) add_cxxflags("-O2", {force = true}) end target_end() end