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

树莓派Pico项目中CMake多子文件夹库添加问题求助

Raspberry Pi Pico开发:解决MCP9600传感器库头文件找不到问题

在Windows系统下使用Visual Studio Code基于Raspberry Pi Pico SDK V1.5开发时,添加MCP9600传感器的子文件夹层级后,编译器无法找到mcp9600.h头文件,核心问题出在CMake配置的顺序和语法错误上。项目结构如下:

/pico-example
     -CMakeLists.txt
      /i2c
          -CMakeLists.txt
          - i2c.c
          /Sensor9600
              -mcp9600.c
              -mcp9600.h
      /spi
      /gpio

修正方案

1. 调整i2c文件夹下的CMakeLists.txt顺序

CMake需要先构建依赖库再链接到可执行文件,因此必须将add_subdirectory(Sensor9600)移到target_link_libraries之前。修正后的内容如下:

add_executable(i2c
        i2c.c
        )

# 先引入Sensor9600子目录构建库
add_subdirectory(Sensor9600)

# pull in common dependencies and additional i2c hardware support
target_link_libraries(i2c pico_stdlib hardware_i2c 
                         mcp9600)

# enable usb output, disable uart output
pico_enable_stdio_usb(i2c 1)
pico_enable_stdio_uart(i2c 0)

# create map/bin/hex file etc.
pico_add_extra_outputs(i2c)

# add url via pico_set_program_url
example_auto_set_url(i2c)

2. 修正Sensor9600文件夹下的CMakeLists.txt

原配置存在语法错误,且头文件无需通过target_sources添加,修正后的内容如下:

add_library(mcp9600 mcp9600.c)
# 为依赖该库的目标添加头文件搜索路径
target_include_directories(mcp9600 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

注:target_include_directories的INTERFACE属性表示,所有链接mcp9600库的目标(比如这里的i2c可执行文件)会自动添加该目录到头文件搜索路径,这样在i2c.c中可以直接用#include "mcp9600.h"引入头文件。

验证步骤

  1. 删除原构建目录(如build文件夹)
  2. 在VS Code中重新执行CMake配置(Ctrl+Shift+P -> CMake: Configure)
  3. 编译项目,确认头文件找不到的错误已解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:52:53