VS: Fix detection of clang-cl with -T llvm
When using a VS generator with `-T llvm`, MSBuild relies on the "LLVM Compiler Toolchain" VS Extension. This does not put `clang-cl` in the `PATH` inside the build, and LLVM no longer provides a `cl` replacement either. Therefore we need another way to extract the path to the `CMAKE_{C,CXX}_COMPILER`. Fortunately the LLVM VS integration provides a `$(ClangClExecutable)` macro we can reference to get the path. Fixes: #18983
This commit is contained in:
parent
e6897c72e7
commit
8375c303e2
@ -181,7 +181,10 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
|
||||
set(vs_version ${CMAKE_MATCH_1})
|
||||
set(id_platform ${CMAKE_VS_PLATFORM_NAME})
|
||||
set(id_lang "${lang}")
|
||||
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
|
||||
set(id_PostBuildEvent_Command "")
|
||||
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Ll][Ll][Vv][Mm]$")
|
||||
set(id_cl_var "ClangClExecutable")
|
||||
elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
|
||||
set(id_cl clang.exe)
|
||||
else()
|
||||
set(id_cl cl.exe)
|
||||
@ -268,7 +271,11 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
|
||||
set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
|
||||
set(id_src "${src}")
|
||||
set(id_compile "ClCompile")
|
||||
set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i")
|
||||
if(id_cl_var)
|
||||
set(id_PostBuildEvent_Command "echo CMAKE_${lang}_COMPILER=$(${id_cl_var})")
|
||||
else()
|
||||
set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i")
|
||||
endif()
|
||||
set(id_Import_props "")
|
||||
set(id_Import_targets "")
|
||||
set(id_ItemDefinitionGroup_entry "")
|
||||
|
Loading…
Reference in New Issue
Block a user