OpenHarmony开源三方库的cmake在IDE上直接引用的问题

前言

DevEco Studio的native工程的C/C++部分当前只支持cmake脚本的编译,工程的目录结构如下图所示

在工程中引用第三方库有如下三种方式,

一、find_package模式

通过find_package,可以在指定目录下去搜索已安装的库(三方库构建完后执行install,会生成xxx-config.cmake之类的文件在安装目录下),如果可以找到对应的库,就可以获取头文件路径以及库的路径

二、add_subdirectory模式

可以通过顶层CMakeLists.txt调用子目录CMakeLists.txt的方式,这样就可以直接引用到第三方库的头文件路径和库

三、target_link_libraries模式

在库链接时直接链接第三方库

背景

DevEco Studio的native工程的C/C++部分是使用的cmake脚本来构建,开源社区上有很多C/C++三方库也是使用cmake来编译构建,这些三方库我们是否可以直接采用add_subdirectory的模式在DevEco Studio上使用?

分析

开源社区的三方库有些需要依赖其他三方库,有些不需要依赖其他三方库,通常依赖其他三方库都是通过使用find_package来引用。如果在DevEco Studio上面使用find_package,需要满足find_package的搜索条件,

有关于find_package的详细介绍可以参考cmake官网find_package介绍

一、指定find_package的搜索路径

这里可以使用CMAKE_FIND_ROOT_PATH来指定,如下图所示

图中xxx代表的就是三方库安装的路径

二、依赖库必须已存在,并且是通过install安装的

通过install安装,除了有lib和incldue文件,还有提供给find_package使用的文件,如下图所示

find_package通过这些文件来获取库的版本、库的头文件、库的名称等信息,假如没有这些文件,find_package将会找不到库。

总结

一、部分开源三方库的脚本可以在DevEco Studio上直接使用

这部分开源三方库没有其他库的依赖,可以直接使用add_subdirectory引用

二、有依赖的三方库的脚本不能在DevEco Studio上直接使用

需要配置搜索路径和提前将依赖的库都构建并安装完毕或者在顶层CMakeLists.txt中使用execute_process来调用shell命令,先把依赖库编译并安装完成

三方库引用的建议

在native工程中,三方库的使用建议都采用target_link_libraries模式来引用

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ......

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ......

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ......

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题

2.性能优化方向

3.架构方向

4.鸿蒙开发系统底层方向

5.鸿蒙音视频开发方向

6.鸿蒙车载开发方向

7.鸿蒙南向开发方向

相关推荐
江团1io02 小时前
深入解析TCP核心机制:连接管理、流量与拥塞控制
服务器·网络·tcp/ip
知白守黑2672 小时前
Ansible角色
运维·服务器·ansible
鹿鹿学长5 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
伴杯猫5 小时前
【ESP32-IDF】基础外设开发2:系统中断矩阵
c语言·单片机·嵌入式硬件·mcu·物联网·github
爱笑的眼睛115 小时前
HarmonyOS 应用开发新范式:深入探索 Stage 模型与 ArkUI 声明式开发
华为·harmonyos
利刃大大6 小时前
【高并发内存池】五、页缓存的设计
c++·缓存·项目·内存池
C语言小火车6 小时前
【C++八股文】基础知识篇
c++·tcp/ip·const·智能指针·多线程同步·static关键字·c++内存模型
liulilittle7 小时前
IP校验和算法:从网络协议到SIMD深度优化
网络·c++·网络协议·tcp/ip·算法·ip·通信
眠りたいです7 小时前
基于脚手架微服务的视频点播系统-播放控制部分
c++·qt·ui·微服务·云原生·架构·播放器
Want5957 小时前
C/C++圣诞树①
c语言·开发语言·c++