summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-16 00:18:25 +0800
committerruki <[email protected]>2022-08-16 00:18:25 +0800
commit39981ebf8e9e5cdbe9103c7019957a04485a4444 (patch)
tree8f5acf584388273903bf9978a04d8e3085cf3945
parent594da22d9c682d293ae9563907e9323a64220ff1 (diff)
improve clang for cmakelists
-rw-r--r--xmake/plugins/project/cmake/cmakelists.lua20
1 files changed, 18 insertions, 2 deletions
diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua
index 68162e1a5..aae7186a2 100644
--- a/xmake/plugins/project/cmake/cmakelists.lua
+++ b/xmake/plugins/project/cmake/cmakelists.lua
@@ -229,8 +229,24 @@ end
function _set_target_compiler(cmakelists, target)
-- use custom toolchain?
if config.get("toolchain") or target:get("toolchains") then
- cmakelists:print("set(CMAKE_C_COMPILER \"%s\")", target:tool("cc"))
- cmakelists:print("set(CMAKE_CXX_COMPILER \"%s\")", target:tool("cxx"))
+ local cc = target:tool("cc")
+ if cc then
+ cc = cc:gsub("\\", "/")
+ cmakelists:print("set(CMAKE_C_COMPILER \"%s\")", cc)
+ end
+ local cxx, cxx_name = target:tool("cxx")
+ if cxx then
+ if cxx_name == "clang" or cxx_name == "gcc" then
+ local dir = path.directory(cxx)
+ local name = path.filename(cxx)
+ name = name:gsub("clang$", "clang++")
+ name = name:gsub("clang%-", "clang++-")
+ name = name:gsub("gcc$", "g++")
+ name = name:gsub("gcc%-", "g++-")
+ cxx = path.join(dir, name):gsub("\\", "/")
+ end
+ cmakelists:print("set(CMAKE_CXX_COMPILER \"%s\")", cxx)
+ end
end
end