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

CLion中通过ST-Link v3调试STM32WB55时CMake配置报错求助

问题:CLion中STM32WB55调试配置的CMake汇编编译器错误

我在CLion中尝试通过ST-Link v3调试搭载STM32WB55的自定义PCB,配置时遇到如下CMake错误:

CMake Error at CMakeLists.txt:18 (project):
  The CMAKE_ASM_COMPILER:

    /opt/homebrew/Cellar/arm-none-eabi-gcc/bin/arm-none-eabi-gcc

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "ASM" or the CMake cache entry CMAKE_ASM_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.

我已确认路径正确,且重装过arm-none-eabi-gcc,但问题仍未解决。以下是我的CMake配置文件:

#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE!
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
cmake_minimum_required(VERSION 3.26)

# specify cross-compilers and tools
set(CMAKE_C_COMPILER /opt/homebrew/bin/arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER /opt/homebrew/bin/arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER  /opt/homebrew/bin/arm-none-eabi-gcc)

set(CMAKE_AR arm-none-eabi-ar)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
set(SIZE arm-none-eabi-size)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# project settings
project(Tof sensor version2 C CXX ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)

#Uncomment for hardware floating point
#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)

#Uncomment for software floating point
#add_compile_options(-mfloat-abi=soft)

add_compile_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork)
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)

# uncomment to mitigate c++17 absolute addresses warnings
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")

# Enable assembler files preprocessing
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)

if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    message(STATUS "Maximum optimization for speed")
    add_compile_options(-Ofast)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
    message(STATUS "Maximum optimization for speed, debug info included")
    add_compile_options(-Ofast -g)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    message(STATUS "Maximum optimization for size")
    add_compile_options(-Os)
else ()
    message(STATUS "Minimal optimization, debug info included")
    add_compile_options(-Og -g)
endif ()

include_directories(Core/Inc Drivers/STM32WBxx_HAL_Driver/Inc Drivers/STM32WBxx_HAL_Driver/Inc/Legacy Drivers/CMSIS/Device/ST/STM32WBxx/Include Drivers/CMSIS/Include "${workspace_loc:/${ProjName}/VL53L8CX_ULD_API/inc}" "${workspace_loc:/${ProjName}/Platform/Inc}")

add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32WB55xx)

file(GLOB_RECURSE SOURCES "TOF/*.*" "Core/*.*" "Platform/src/*.*" "Drivers/*.*" "VL53L8CX_ULD_API/src/*.*")

set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32WB55CEUX_FLASH.ld)

add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map)
add_link_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork)
add_link_options(-T ${LINKER_SCRIPT})

add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT})

set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin)

add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
        COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
        COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
        COMMENT "Building ${HEX_FILE}
Building ${BIN_FILE}")

解决方案

  • 清除CMake缓存并重新配置:CMake报错中显示的汇编编译器路径与配置的不一致,说明存在旧缓存。删除项目下的cmake-build-*文件夹,重启CLion后重新加载CMake配置。
  • 验证编译器可执行性:在终端执行以下命令,确认编译器路径有效且可执行:
    /opt/homebrew/bin/arm-none-eabi-gcc --version
    
    若提示权限问题,执行sudo chmod +x /opt/homebrew/bin/arm-none-eabi-gcc赋予可执行权限。
  • 调整CMake配置顺序:将cmake_minimum_required(VERSION 3.26)移到配置最顶部,CMake要求版本声明优先于系统和编译器配置,否则可能导致变量未被正确识别。修改后的开头如下:
    cmake_minimum_required(VERSION 3.26)
    set(CMAKE_SYSTEM_NAME Generic)
    set(CMAKE_SYSTEM_VERSION 1)
    
    # specify cross-compilers and tools
    set(CMAKE_C_COMPILER /opt/homebrew/bin/arm-none-eabi-gcc)
    set(CMAKE_CXX_COMPILER /opt/homebrew/bin/arm-none-eabi-g++)
    set(CMAKE_ASM_COMPILER /opt/homebrew/bin/arm-none-eabi-gcc)
    
  • 通过环境变量指定汇编器:在CLion的「Settings → Build, Execution, Deployment → CMake」中,添加环境变量ASM=/opt/homebrew/bin/arm-none-eabi-gcc;或在终端启动CLion前设置环境变量:
    export ASM=/opt/homebrew/bin/arm-none-eabi-gcc
    open -a CLion
    
  • 修复Homebrew链接:Homebrew安装的工具可能存在链接失效,执行以下命令重新安装并链接:
    brew reinstall arm-none-eabi-gcc
    brew link --overwrite arm-none-eabi-gcc
    

内容的提问来源于stack exchange,提问作者julion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:55:55