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

如何在CMake子库中正确引用Pico-SDK库?

问题解决方法

你的问题出在bme68x子库的CMake配置未关联Pico SDK的依赖组件,导致编译子库时无法找到hardware/i2c.h和pico/stdlib.h的头文件路径。主项目能正常编译是因为主target通过target_link_libraries关联了这些组件,自动导入了对应的头文件目录,但子库未做同样配置。

修改bme68x/CMakeLists.txt,补充以下配置:

add_library(
    bme68x
    bme68x_defs.h
    bme68x.h
    bme68x.c
    bme68x_API.h
    bme68x_API.c
)

# 关联Pico SDK依赖,自动导入头文件路径
target_link_libraries(bme68x PRIVATE
    pico_stdlib
    hardware_i2c
)

# 让主项目能直接引用子库的头文件(可选,但更规范)
target_include_directories(bme68x PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

配置说明:

  • target_link_libraries(bme68x PRIVATE ...):给bme68x库添加依赖,Pico SDK的组件会自动把自身的头文件目录注入到库的编译包含路径中,编译bme68x_API.c时就能找到目标头文件。
  • target_include_directories(bme68x PUBLIC ...):将子库的当前目录设为公共包含目录,主项目中可直接用#include "bme68x_API.h"引用子库头文件,无需写相对路径。

修改后重新生成CMake缓存并编译即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:18