跳转至

第三方软件移植

概述

本文档详细的描述了WS53V100移植第三方软件到SDK中的构建操作指导,同时提供了常见的问题解答及故障处理方法。

移植指引

概述

WS53V100的SDK使用CMake作为构建工具,因此建议使用CMake进行第三方库的移植,从而保证编译的完整性和连贯性。其主要文件编译依赖CMakeLists.txt文件,当需要新增并编译第三方组件时,需要对CMake框架进行修改新增,即修改CMakeLists.txt。

CMake构建

以移植cjson为例(SDK已集成该组件,可以参考对应文件的修改),移植的步骤如下:

  1. 将第三方组件放置于 src/open_source/ 目录下(例如:src/open_source/cjson/cjson,新增一层路径便于对文件路径处理)。
  2. 在“opensource”目录下,找到本层级的CMakeLists.txt,在该文件内新增一行

    add_subdirectory_if_exist(cjson)
    

    即可将对应的 src/open_source/cjson 路径新增到编译框架中。

  3. 对新增组件内部 src/open_source/cjson 路径的 CMakeLists.txt 进行修改。

    设置组件名称:

    set(COMPONENT_NAME "cjson")
    

    将xxx.c加入到编译:

    set(SOURCES xxx.c)
    

    私有头文件引用路径:

    set(PRIVATE_HEADER yyy)
    

    私有编译参数:

    set(COMPONENT_CCFLAGS zzz)
    

    设置输出路径:

    set(LIB_OUT_PATH ...)
    
  4. 现在,已经成功将一个名为“cjson”(COMPONENT_NAME)的组件新增到框架中了,最后应开启对该组件的编译。通过修改“build/config/target_config/ws53/config.py”中对应的target的“ram_component”,将需要编译的组件加入到编译流程中。例如:

    想要编译的target名称为“ws53_liteos_app”,则找到“ws53_liteos_app”字典下的ram_component,在该数组中新增值“cjson”,当启动“ws53_liteos_app”的编译时,CMake就会尝试编译“cjson”(SOURCES)

常见问题

本章节对用户常见的编译问题进行收集整理,并为用户提供基本的参考。

CMake基本语法

除了上文提到的“COMPONENT_NAME”、“SOURCES”、“PRIVARE_HEADER”、“COMPONENT_CCFLAGES”、“LIB_OUT_PATH”之外,还可以定义公共头文件、公共编译参数等。

用户可参考标准CMakeLists.txt的开发流程,对SDK进行定制化修改。

若第三方组件目录中已有 CMakeLists.txt,可以在 src/open_source/CMakeLists.txt 中使用 add_subdirectory_if_exist(<目录名>),将该组件加入构建流程。

头文件引用问题

当用户在开发过程中需要引用新增第三方组件的头文件时,可以在第三方组件的CMakeLists.txt中指定公共的头文件。

例如,需要引用 cJSON 组件下的 cJSON.h(实际上已全文件引用,仅作参考),则需要在 src/open_source/cjson 中的 CMakeLists.txt 增加:

set (PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/cjson/cJSON.h)