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 --versionsudo 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
相关产品推荐
相关产品推荐

