Zephyr / PlatformIO / CMake /外部代码

问题描述

我对Zephyr来说还很陌生,在同级文件夹中添加和编译代码时遇到了麻烦。使用PlatformIO可能会使情况更加复杂,该平台的构建结构与库存Zephyr结构略有不同。

IDE是Windows下的Visual Studio代码

代码的结构为:

Parent Folder
|-ext_library (contains CMakeList.txt)
|--source
|--include
|-zephyr_project (structure generated by PlatformIO)
|--zephyr (contains the master CMakeList.txt and prj.conf)
|--source
|--include
|--lib

我想要做的是将源文件或静态库从 ext_library 添加到 zephyr_project ,而无需手动复制源/包含文件或手动构建库,并且复制过来。

到目前为止我已经尝试过:

  • zephyr_project / zephyr / CMakeList.txt 中的FILE(GLOB ...)命令中为 ext_library 添加路径。该命令将 zephyr_project / source 中的源文件,但似乎不喜欢 ext_library 的相对路径或静态路径。
  • ext_library 中添加CMakeList.txt,以编译静态库。这还需要使用 add_subdirectory zephyr CMakeLists.txt文件。这似乎没有编译库, 但是,它似乎找到了 ext_library / CMakeLists.txt 。 证据在 zephyr_project / lib 文件夹中,该文件夹包含一些CMake文件夹,这些文件夹为空,但命名为 ext_library / CMakeLists.txt 。其他证据是 在两个CMakeLists.txt中的message(...)命令都将被打印。
  • 使用到 ext_library 文件夹的静态和相对路径。
  • 使用cmake FILE(COPY ...),未复制文件。没有明显的错误。

有效的方法: 将 ext_library / source ext_library / include 中的代码手动复制到 zephyr_project 中的相应文件夹中。

其他信息: zephyr_project / zephyr / CMakeLists.txt (原始+尝试将ext_library添加为子目录)

cmake_minimum_required(VERSION 3.13.1)
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(firmware)

set(EXT_LIB "C:/Users/mcelr/Desktop/project/ext_library")
add_subdirectory(${EXT_LIB} ${PROJECT_SOURCE_DIR})

FILE(GLOB app_sources 
    "../src/*.c*"
)

ext_library / CMakeLists.txt (CMAKE_CURRENT_SOURCE_DIR在运行时确实指向正确的目录,已通过删除的消息(...)记录确认)

cmake_minimum_required(VERSION 3.13.1)
project(ext_lib)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
set(LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
add_library(ext_lib_zephyr STATIC
    ${CMAKE_CURRENT_SOURCE_DIR}/source/packet.c
    ${CMAKE_CURRENT_SOURCE_DIR}/source/checksum.c
)

非常感谢您提供解决此问题的任何建议或提示, 奥斯丁

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)