diff options
| author | ruki <[email protected]> | 2022-08-16 00:18:25 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-08-16 00:18:25 +0800 |
| commit | 39981ebf8e9e5cdbe9103c7019957a04485a4444 (patch) | |
| tree | 8f5acf584388273903bf9978a04d8e3085cf3945 | |
| parent | 594da22d9c682d293ae9563907e9323a64220ff1 (diff) | |
improve clang for cmakelists
| -rw-r--r-- | xmake/plugins/project/cmake/cmakelists.lua | 20 |
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 |
