summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-07-20 00:59:27 +0800
committerruki <[email protected]>2024-07-20 00:08:38 +0800
commitcc5c0036e9810b32cab78cbf5b9cd4638e80d68d (patch)
tree3b67a4cca51f66a0ccca03799e9d39bfb9be0ec2
parent87308fe638fc9a7da3e8d90e40a375f7ca562136 (diff)
improve tools.cmake for ninja
-rw-r--r--xmake/modules/package/tools/cmake.lua18
1 files changed, 18 insertions, 0 deletions
diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua
index d2fa362c6..3e798cbc2 100644
--- a/xmake/modules/package/tools/cmake.lua
+++ b/xmake/modules/package/tools/cmake.lua
@@ -979,6 +979,15 @@ end
-- do build for ninja
function _build_for_ninja(package, configs, opt)
opt = opt or {}
+ -- Fix pdb issue, if multiple CL.EXE write to the same .PDB file, please use /FS
+ -- @see https://github.com/xmake-io/xmake/issues/5353
+ if package:is_plat("windows") and package:has_tool("cxx", "cl") then
+ local buildir = opt.buildir or package:buildir()
+ local pdbdir = path.join(package:buildir(), "pdb")
+ if not os.isdir(pdbdir) then
+ os.mkdir(pdbdir)
+ end
+ end
ninja.build(package, {}, {envs = opt.envs or buildenvs(package, opt),
jobs = opt.jobs,
target = opt.target})
@@ -1063,6 +1072,15 @@ end
-- do install for ninja
function _install_for_ninja(package, configs, opt)
opt = opt or {}
+ -- Fix pdb issue, if multiple CL.EXE write to the same .PDB file, please use /FS
+ -- @see https://github.com/xmake-io/xmake/issues/5353
+ if package:is_plat("windows") and package:has_tool("cxx", "cl") then
+ local buildir = opt.buildir or package:buildir()
+ local pdbdir = path.join(package:buildir(), "pdb")
+ if not os.isdir(pdbdir) then
+ os.mkdir(pdbdir)
+ end
+ end
ninja.install(package, {}, {envs = opt.envs or buildenvs(package, opt),
jobs = opt.jobs,
target = opt.target})