🛰️请耐心等待,正在努力加载站点资源🚀

boxmoe_header_banner_img

加载中

vscode的cmake环境配置


avatar
jie 2026年4月20日 2026年5月10日 177

vscode的cmake环境配置

使用步骤

1. 第一步 使用vscode打开 并选择插件

2. 第二步 插件的下载(可以先安装Chinese插件切换中文)

选中左侧扩展按钮进行搜索

2.1 STM32CubeIDE for VisualStudio Code

2.2 Cortex-Debug

2.3 Cmake(也可以直接下载支持,不安装插件)

3. 第三步 成功开启加载工程

3.1 等待上方出现选择后选择Debug预设(如果debug选项消失,可以重新进入或者在cmake tool 中选择)

3.2 慢慢等待右下角出现是后点击是(等待加载一段时间,如不显示可以查看是否联网,或者重新进入项目再次进行选择)

3.3 成功编译

4. 第四步 编译链的修改(如果只用vscode建议使用clang或者GCC都可以, 如果同时用vscode和clion建议使用GCC)

4.1 生成的代码默认是GCC

"toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake"

4.2 将编译链修改成CLANG

"toolchainFile": "${sourceDir}/cmake/starm-clang.cmake"

{
  "version": "0.2.0",
  "configurations": [
    {
      "cwd": "${workspaceRoot}",
      "executable": "build/Debug/clion_tryjie.elf",
      "name": "Debug with OpenOCD",
      "request": "launch",
      "type": "cortex-debug",
      "servertype": "openocd",
      "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/stm32f4x.cfg"
      ],
      "serverpath": "E:/RM/RM/xpack-openocd-0.12.0-7-win32-x64/xpack-openocd-0.12.0-7/bin/openocd.exe",
      "searchDir": [
        "E:/RM/RM/xpack-openocd-0.12.0-7-win32-x64/xpack-openocd-0.12.0-7/openocd/scripts"
      ],
      "runToEntryPoint": "main",
      "showDevDebugOutput": "none",
      "gdbPath": "C:/Users/24137/AppData/Local/stm32cube/bundles/gnu-tools-for-stm32/13.3.1+st.9/bin/arm-none-eabi-gdb",
      "liveWatch": {
        "enabled": true,
        "samplesPerSecond": 4
      }
    }
  ]
}

5. 第五步 vscode中使用daplink下载,stlink下载,jlink下载

5.1 stlink下载 (快捷键F5)

5.2 jlink下载 (快捷键F5)

5.3 daplink下载 (快捷键F5)

5.3.1 方法一:观看 xr 的教程进行自主学习搭建

xr的daplink

5.3.2 方法二:按照我的图片教程自己学习搭建

5.3.3 参考代码

5.3.4 相关软件的安装

openocd

手把手教你配置 STM32CubeIDE for VSCode 下基于 OpenOCD 的调试配置

everything

5.3.5 配置步骤

代码  "executable": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}",

5.3.5.1 将”executable”: 改为环境变量(统一不需要多次修改)或者编译出的elf文件(复制相对路径)

5.3.5.2 添加配置文件

5.3.5.3 添加搜索文件夹和openocd路径

5.3.5.3.1 找到openocd的 scripts

5.3.5.3.2 找到openocd的 openocd.exe

5.3.5.3.3 打开everything 搜索gdb路径(everything下载地址在上方)

5.3.5.4 自由选择是否添加liveWatch(不如ozone好用,ozone的使用请看后面教程)

livewatch(liveWatch的st官方介绍)

6. CMakelist 文件的修改

6.1 添加每一个文件路径

6.1.1 方法一 为每一个.C或 .C++文件添加路径(好处是清晰分明)(建议此方法)

以我的代码架构作为参考

├── ADC
│ ├── drv_adc.cpp
│ └── drv_adc.h
├── CMakeLists.txt
├── CMakePresets.json
├── Core
│ ├── Inc
│ └── Src
├── Drivers
│ ├── CMSIS
│ └── STM32F4xx_HAL_Driver
├── Middlewares
│ └── Third_Party
├── SEGGER
│ ├── Config
│ └── RTT
├── STM32F405XX_FLASH.ld
├── bsp
│ ├── log
│ └── usart
├── build
│ └── Debug
├── cmake
│ ├── gcc-arm-none-eabi.cmake
│ ├── starm-clang.cmake
│ └── stm32cubemx
├── component
│ ├── comp_ahrs.c
│ ├── comp_ahrs.h
│ ├── comp_cmd.c
│ ├── comp_cmd.h
│ ├── comp_game.h
│ ├── comp_type.h
│ ├── comp_utils.c
│ └── comp_utils.h
├── modules
│ └── dr16
├── one.ioc
├── startup_stm32f405xx.s
├── task
│ └── dr16
└── tool
├── convert
└── process

# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE

Add user sources here

task/dr16/dr16_task.c bsp/log/bsp_log.c component/comp_utils.c component/comp_cmd.c component/comp_ahrs.c bsp/usart/bsp_uart.c modules/dr16/dev_dr16.c SEGGER/RTT/SEGGER_RTT.c SEGGER/RTT/SEGGER_RTT_printf.c SEGGER/RTT/SEGGER_RTT_ASM_ARMv7M.s tool/convert/convert.c tool/process/process.h ADC/drv_adc.cpp )

Add include paths

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE

Add user defined include paths

task/dr16 SEGGER SEGGER/Config SEGGER/RTT component tool tool/convert tool/process bsp bsp/usart bsp/log modules modules/dr16 ADC )

"executable": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}",

6.1.2 直接添加文件路径(好处是无需为此文件路径下的每一个代码添加.c或.cpp文件)

# Link directories setup
target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE

Add user defined library search paths

)

set(USER_CODE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/task" "${CMAKE_CURRENT_SOURCE_DIR}/component" "${CMAKE_CURRENT_SOURCE_DIR}/bsp" "${CMAKE_CURRENT_SOURCE_DIR}/modules" "${CMAKE_CURRENT_SOURCE_DIR}/tool" "${CMAKE_CURRENT_SOURCE_DIR}/SEGGER" "${CMAKE_CURRENT_SOURCE_DIR}/ADC" )

set(USER_SOURCES) set(USER_HEADERS)

foreach(USER_CODE_DIR IN LISTS USER_CODE_DIRS) file(GLOB_RECURSE USER_DIR_SOURCES CONFIGURE_DEPENDS "${USER_CODE_DIR}/.c" "${USER_CODE_DIR}/.cpp" "${USER_CODE_DIR}/.s" "${USER_CODE_DIR}/.S" )

file(GLOB_RECURSE USER_DIR_HEADERS CONFIGURE_DEPENDS "${USER_CODE_DIR}/.h" "${USER_CODE_DIR}/.hpp" )

list(APPEND USER_SOURCES ${USER_DIR_SOURCES}) list(APPEND USER_HEADERS ${USER_DIR_HEADERS}) endforeach()

list(REMOVE_DUPLICATES USER_SOURCES) list(REMOVE_DUPLICATES USER_HEADERS)

set(USER_INCLUDE_DIRS ${USER_CODE_DIRS}) foreach(USER_HEADER IN LISTS USER_HEADERS) get_filename_component(USER_HEADER_DIR "${USER_HEADER}" DIRECTORY) list(APPEND USER_INCLUDE_DIRS "${USER_HEADER_DIR}") endforeach() list(REMOVE_DUPLICATES USER_INCLUDE_DIRS)

Add sources to executable. Headers are included for IDE visibility.

target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${USER_SOURCES} ${USER_HEADERS} )

Add include paths

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${USER_INCLUDE_DIRS} )

6.2 添加printf的float支持

# Remove wrong libob.a library dependency when using cpp files
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob)

Add linked libraries

target_link_libraries(${CMAKE_PROJECT_NAME} stm32cubemx

Add user defined libraries

)

target_link_options(${CMAKE_PROJECT_NAME} PRIVATE

Add user defined link options here

LINKER:-u,_printf_float )

6.3 添加C++支持(如果代码使用了C++)

# Setup compiler settings
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)

set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF)

# Enable CMake support for ASM, C and C++ languages
enable_language(C CXX ASM)

上一次更新已经跑远了✨ 计算中...
(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码
杰的小站

最新评论

后退
前进
刷新
复制
粘贴
全选
删除
返回首页
0%
目录
顶部
底部
📖 文章导读