树莓派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"引入头文件。
验证步骤
- 删除原构建目录(如
build文件夹) - 在VS Code中重新执行CMake配置(Ctrl+Shift+P -> CMake: Configure)
- 编译项目,确认头文件找不到的错误已解决
内容的提问来源于stack exchange,提问作者Rarodron
相关产品推荐
相关产品推荐

