我们在做项目的时候,通常会使用到一些开源的第三方库,那如何将第三方库添加进来,并正确编译呢?步骤大致如下图:
1、首先我们把第三方库下载好,放到open_source目录里,这里我是把源码放到open_source/nanopb/nanopb路径下(使用git submodule的方式)
2、从cjson目录里复制一个CMake配置文件,然后修改成以下内容。
#===============================================================================
# [url=home.php?mod=space&uid=159083]@brief[/url] cmake file
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
#===============================================================================
set(COMPONENT_NAME "nanopb")
set(CMAKE_CJSON_SOURCE_DIR
${CMAKE_CURRENT_SOURCE_DIR})
set(SOURCES
${CMAKE_CJSON_SOURCE_DIR}/nanopb/pb_common.c
${CMAKE_CJSON_SOURCE_DIR}/nanopb/pb_decode.c
${CMAKE_CJSON_SOURCE_DIR}/nanopb/pb_encode.c
)
set(PUBLIC_HEADER
${CMAKE_CJSON_SOURCE_DIR}/nanopb
)
set(PRIVATE_HEADER
${CMAKE_CJSON_SOURCE_DIR}/nanopb
)
set(PRIVATE_DEFINES
GNU_SOURCE
HAS_EXCEPTIONS=0
HAVE_CONFIG_H
PB_ENABLE_MALLOC
)
# use this when you want to add ccflags like -include xxx
set(COMPONENT_PUBLIC_CCFLAGS
)
set(COMPONENT_CCFLAGS
-Wno-error=logical-op
-Wno-error=sign-compare
-Wno-error=jump-misses-init
-Wno-sign-compare
-Wno-jump-misses-init
-Wno-error=unused-parameter
-Wno-unused-parameter
-Wno-unused-but-set-variable
-Wno-error=unused-variable
)
set(WHOLE_LINK
true
)
set(MAIN_COMPONENT
false
)
build_component()
记得把set(LIB_OUT_PATH ${BIN_DIR}/${CHIP}/libs/wifi/${TARGET_COMMAND})这一行给删掉
3、修改上级目录的CMake配置文件(也就是open_source/CMakeLists.txt),添加这一行内容
add_subdirectory_if_exist(nanopb)
这样,就可以把nanopb这个库添加到构建系统了,光是这样还不够,我们还需要在配置文件里注册nanopb这个组件(启用组件),具体步骤如下图
1、打开配置文件build/config/target_config/ws63/config.py
2、找到ws63-liteos-app下的 'ram_component' 属性,然后添加对应的组件即可
完成这些操作后,就可以重新编译固件了,编译完成后,可以看到map文件里已经有nanopb的相关函数和对应符号。