rule("mimalloc_dynamic") on_load(function (target) target:add("defines", "MI_SHARED_LIB") local mimalloc_dir = path.join(os.projectdir(), "extern/mimalloc") target:add("includedirs", path.join(mimalloc_dir, "include")) target:add("linkdirs", path.join(mimalloc_dir, "lib")) -- 注意这里查询的是 lib 目录 -- 只链接 DLL 导入库 if os.exists(path.join(mimalloc_dir, "lib/mimalloc.dll.lib")) then target:add("links", "mimalloc.dll") else -- 警告:如果找不到 DLL 导入库,不要 fallback 到静态库! raise("mimalloc.dll.lib not found! Please build mimalloc DLL first.") end if is_plat("windows") then target:add("ldflags", "/INCLUDE:mi_version", {force = true}) end end) after_build(function (target) local bin_dir = path.join(os.projectdir(), "extern/mimalloc/bin") local dlls = {"mimalloc.dll", "mimalloc-redirect.dll"} for _, dll in ipairs(dlls) do local src = path.join(bin_dir, dll) if os.exists(src) then os.cp(src, target:targetdir()) end end end) rule_end()