Возникла проблема - запускать cmake
только с компилятором clang. На Винде. Если запускать cmake из командной строки с заданными параметрами:
cmake ..
-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE
-DCMAKE_C_COMPILER:FILEPATH=C:\Program Files\LLVM\bin\clang.exe
-DCMAKE_CXX_COMPILER:FILEPATH=C:\Program Files\LLVM\bin\clang++.exe
то всё работает корректно.
Но если я пытаюсь описать это в CMakeLists.txt :
project(test)
find_program(CLANG_C_PATH clang)
find_program(CLANG_CXX_PATH clang++)
if (CLANG_C_PATH AND CLANG_CXX_PATH)
set(CXX "${CLANG_CXX_PATH}")
set(CC "${CLANG_C_PATH}")
set(CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE)
set(CMAKE_C_COMPILER:FILEPATH = "${CLANG_C_PATH}")
set(CMAKE_CXX_COMPILER:FILEPATH = "${CLANG_CXX_PATH}")
message("Clang Found - " "${CLANG_CXX_PATH}")
message("Clang++ Found - " "${CLANG_C_PATH}")
else()
message("Clang not Found.")
endif()
find_program(CLANG_COMPILER clang)
find_program(CLANGXX_COMPILER clang++)
if (CLANG_COMPILER AND CLANGXX_COMPILER)
set(CMAKE_CXX_COMPILER "${CLANGXX_COMPILER}")
set(CMAKE_C_COMPILER "${CLANG_COMPILER}")
message("Clang Found")
else()
message("Clang not Found.")
endif()
то при команде в виндузовом терминале:
cd build
cmake ..
Все равно запускает компилятор
cl :
-- Building for: Visual Studio 17 2022
-- The C compiler identification is MSVC 19.44.35211.0
-- The CXX compiler identification is MSVC 19.44.35211.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Clang Found - C:/Program Files/LLVM/bin/clang++.exe
Clang++ Found - C:/Program Files/LLVM/bin/clang.exe
Clang Found
т.е cmake сначала задаёт компилятор cl, а только потом начитает искать clang. Как так?