使用CMake搭配Clang时出现'Detecting C-compiler ABI info - failed'错误求助
问题解决步骤
1. 移除CMAKE_SYSTEM_NAME Generic设置
Generic系统标识会让CMake跳过Windows平台的可执行文件格式处理,导致链接生成的程序不具备Windows可执行属性,直接删除这一行:
# 删除此行 # set(CMAKE_SYSTEM_NAME Generic)
2. 修正CMake版本要求
目前CMake并无4.00版本,改为支持C++20的合理最低版本:
cmake_minimum_required(VERSION 3.20)
3. 规范编译器设置方式
不要在CMakeLists.txt硬编码编译器路径,建议通过cmake命令行指定,避免路径适配问题:
cmake -GNinja -DCMAKE_C_COMPILER=clang.exe -DCMAKE_CXX_COMPILER=clang++.exe ..
同时删除CMakeLists.txt中这两行硬编码:
# 删除此行 # set(CMAKE_C_COMPILER "clang.exe") # 删除此行 # set(CMAKE_CXX_COMPILER "clang++.exe")
4. 移除错误的构建参数
-DLLVM_ENABLE_PROJECTS=clang是编译LLVM/Clang源码时的专属参数,你的HelloWorld项目无需此配置,构建命令改为:
cmake -GNinja ..
(如果需要指定编译器则用步骤3中的命令)
5. 简化CMakeLists.txt(可选)
enable_language(C CXX)会被project命令自动触发,可删除;头文件无需加入add_executable(CMake会自动处理依赖),最终简化后的配置如下:
cmake_minimum_required(VERSION 3.20) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 强制启用C++20标准 project(HelloWorld) add_executable(HelloWorld HelloWorld.cpp)
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

