mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Clang: Fall back to llvm-rc when rc is unavailable
This change modifies how CMAKE_RC_COMPILER is configured to improve the out-of-box experience for developers using Clang on Windows. The previous behavior was to require the user to explicitly specify the resource compiler when CMake was called. The new behavior is to automatically attempt to locate the MSVC rc binary and use that if it's found. If rc is not available, CMake will now fall back to Clang's llvm-rc binary. With this change in place, trivial C/C++ programs can be generated with Ninja and Clang on Windows without running into errors about a missing resource compiler. Fixes: #19318
This commit is contained in:
@@ -99,6 +99,21 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
|
||||
"or clang-cl as both C and C++ compilers.")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_RC_COMPILER_INIT)
|
||||
# Check if rc is already in the path
|
||||
# This may happen in cases where the user is already in a visual studio environment when CMake is invoked
|
||||
find_program(__RC_COMPILER_PATH NAMES rc)
|
||||
|
||||
# Default to rc if it's available, otherwise fall back to llvm-rc
|
||||
if(__RC_COMPILER_PATH)
|
||||
set(CMAKE_RC_COMPILER_INIT rc)
|
||||
else()
|
||||
set(CMAKE_RC_COMPILER_INIT llvm-rc)
|
||||
endif()
|
||||
|
||||
unset(__RC_COMPILER_PATH CACHE)
|
||||
endif()
|
||||
|
||||
if ( "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" OR "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" )
|
||||
include(Platform/Windows-MSVC)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user