-- ============================================== -- Extra2D 引擎库共享配置 -- 被主项目和示例共享使用 -- ============================================== -- 获取当前平台 local function get_current_plat() return get_config("plat") or os.host() end -- 定义 TBB 源码编译目标 function define_tbb_target() target("tbb") set_kind("static") set_languages("c++17") add_includedirs("third_party/tbb/include", {public = true}) add_files("third_party/tbb/src/tbb/*.cpp") add_defines("__TBB_BUILD=1") add_defines("TBB_SUPPRESS_DEPRECATED_MESSAGES=1") add_defines("TBB_USE_PROFILING_TOOLS=0") local plat = get_current_plat() if plat == "mingw" then -- TBB uses ANSI Windows APIs, don't define UNICODE -- MinGW doesn't define LOAD_LIBRARY_SAFE_CURRENT_DIRS add_defines("LOAD_LIBRARY_SAFE_CURRENT_DIRS=0x00002000") elseif plat == "switch" then add_defines("__TBB_USE_THREAD_SANITIZER=0") add_defines("TBB_USE_ASSERT=0") add_defines("TBB_USE_DEBUG=0") end add_cxflags("-Wno-implicit-fallthrough", "-Wno-unused-function", "-Wno-unused-variable", {force = true}) target_end() end -- 定义 Extra2D 引擎库目标 function define_extra2d_engine() define_tbb_target() target("extra2d") set_kind("static") add_deps("tbb") add_files("src/**.cpp") add_files("third_party/glad/src/glad.c") add_includedirs("include", {public = true}) add_includedirs("third_party/glad/include", {public = true}) add_includedirs("third_party", {public = true}) add_defines("TBB_USE_PROFILING_TOOLS=0") local plat = get_current_plat() if plat == "mingw" then add_defines("_UNICODE", "UNICODE") add_packages("glm", "libsdl2", "libsdl2_mixer", {public = true}) add_syslinks("opengl32", "glu32", "winmm", "imm32", "version", "setupapi", {public = true}) elseif plat == "switch" then local devkitPro = os.getenv("DEVKITPRO") or "C:/devkitPro" add_includedirs(devkitPro .. "/portlibs/switch/include", {public = true}) add_linkdirs(devkitPro .. "/portlibs/switch/lib") add_syslinks("SDL2_mixer", "SDL2", "opusfile", "opus", "vorbisidec", "ogg", "modplug", "mpg123", "FLAC", "GLESv2", "EGL", "glapi", "drm_nouveau", {public = true}) end 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}) 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