前言

概述

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

读者对象

本文档主要适用于以下工程师:

  • 技术支持工程师

  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修改记录

文档版本

发布日期

修改说明

02

2024-06-27

  • 更新“CMake构建”章节内容。
  • 更新“CMake基本语法”章节内容。

01

2024-04-10

第一次正式版本发布。

00B01

2024-02-22

第一次临时版本发布。

移植指引

概述

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

CMake构建

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

  1. 将第三方组件放置于“opensource”目录下(例如:opensource/cjson/cjson,新增一层路径便于对文件路径处理)。

  2. 在“opensource”目录下,找到本层级的CMakeLists.txt,在该文件内新增一行

    add_subdirectory_if_exist(cjson)
    

    即可将对应的“opensource/cjson”路径新增到编译框架中。

  3. 对新增组件内部opensource/cjson路径的CMakeList.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/ws63/config.py“中对应的target的“ram_component”,将需要编译的组件加入到编译流程中。例如:

    想要编译的target名称为“ws63-liteos-app”,则找到“ws63-liteos-app”字典下的ram_component,在该数组中新增值“cjson”,当启动“ws63-liteos-app”的编译时(使用IDE启动构建,或使用python build.py编译),CMake就会尝试编译“cjson”(SOURCES)。

常见问题

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

CMake基本语法

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

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

若在三方组件中已有CMakeLists.txt可进行调用,也可以opensource路径下的CMakeLists.txt将文件夹直接add_subdirectory_if_exits(xxx),来进行编译

头文件引用问题

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

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

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