树莓派Pico项目CMake无法找到custom_gpio库,链接器报错
问题原因及解决方法
问题核心是根目录的CMakeLists.txt没有触发gpio子目录的构建流程,导致custom_gpio库从未被编译,链接器自然找不到对应的库文件。
具体修复步骤
- 修改根目录CMakeLists.txt,添加
add_subdirectory(gpio)指令,同时调整pico_add_extra_outputs的参数:
cmake_minimum_required(VERSION 3.13) include(pico_sdk_import.cmake) project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() # 关键:添加此指令,让CMake处理gpio子目录的构建脚本 add_subdirectory(gpio) set(SOURCE_FILES main.cpp) include_directories(${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/gpio) add_executable(test ${SOURCE_FILES} ) target_link_libraries(test custom_gpio) # 仅传入可执行目标test即可,库不需要额外生成UF2输出 pico_add_extra_outputs(test)
- 清理现有build目录,重新构建:
cd build rm -rf ./* cmake .. make -j4
原因解释
add_subdirectory(gpio)是告诉CMake去解析gpio目录下的CMakeLists.txt,从而编译生成custom_gpio库。没有这一步,CMake完全不知道这个子目录的存在,不会去编译该库。- 之前cmake配置阶段没有报错,是因为CMake只做了语法检查和依赖验证,并没有实际编译库文件,直到链接阶段才暴露问题。
内容的提问来源于stack exchange,提问作者ArunVijay0718
相关产品推荐
相关产品推荐

