You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CMake生成使用Clang编译的VS2022项目文件

解决CMake生成VS2022项目并使用Clang编译的问题

第一步:修正CMakeLists.txt

首先移除CMakeLists中硬编码的编译器设置,这会干扰CMake对VS工具链的自动检测:

cmake_minimum_required(VERSION 3.16)
project(Test)

# Use C23 standard
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)

# Use C++23 standard
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 移除以下两行硬编码设置
# set(CMAKE_C_COMPILER "clang")
# set(CMAKE_CXX_COMPILER "clang++")

# Include subprojects
add_subdirectory(TestLib)
add_subdirectory(Runtime)

第二步:根据Clang类型选择正确的CMake命令

场景1:使用Visual Studio集成的ClangCL

确保安装VS2022时勾选了C++ Clang tools for Windows组件,然后执行以下命令:

cmake -S . -B build -G "Visual Studio 17 2022" -T ClangCL

-T ClangCL参数会告诉CMake使用VS集成的Clang工具链,生成的VS项目默认会用Clang编译。

场景2:使用独立安装的LLVM Clang

如果是单独安装的LLVM(从LLVM官网下载的版本),需要指定编译器绝对路径,并强制CMake使用该编译器:

cmake -S . -B build -G "Visual Studio 17 2022" ^
-DCMAKE_C_COMPILER="C:/Program Files/LLVM/bin/clang.exe" ^
-DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" ^
-DCMAKE_C_COMPILER_FORCED=ON ^
-DCMAKE_CXX_COMPILER_FORCED=ON
  • CMAKE_C_COMPILER_FORCED和CMAKE_CXX_COMPILER_FORCED用于跳过CMake对编译器的兼容性检测,避免环境差异导致的检测失败。
  • 替换路径为实际的LLVM安装路径,路径含空格时必须用引号包裹。

常见问题排查

  1. 添加-T ClangCL后提示找不到编译器:打开VS Installer,修改安装选项,勾选“C++ Clang tools for Windows”后重新安装组件。
  2. 指定编译器路径后出现“clang: error: no input files”:添加CMAKE_*_COMPILER_FORCED=ON参数跳过检测;同时验证clang路径是否正确,可在命令行执行clang --version确认编译器能正常运行。
  3. 生成的项目仍使用MSVC:确保CMakeLists中无硬编码编译器设置,生成前删除旧build目录清除缓存,再重新执行命令。

内容的提问来源于stack exchange,提问作者Tea-F-Tea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:20:09