首页
学习
活动
专区
圈层
工具
发布

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

前言DevEco Studio的native工程的C/C++部分当前只支持cmake脚本的编译,工程的目录结构如下图所示在工程中引用第三方库有如下三种方式,一、find_package模式通过find_package...,可以在指定目录下去搜索已安装的库(三方库构建完后执行install,会生成xxx-config.cmake之类的文件在安装目录下),如果可以找到对应的库,就可以获取头文件路径以及库的路径二、add_subdirectory...DevEco Studio的native工程的C/C++部分是使用的cmake脚本来构建,开源社区上有很多C/C++三方库也是使用cmake来编译构建,这些三方库我们是否可以直接采用add_subdirectory...,如下图所示find_package通过这些文件来获取库的版本、库的头文件、库的名称等信息,假如没有这些文件,find_package将会找不到库。...总结一、部分开源三方库的脚本可以在DevEco Studio上直接使用这部分开源三方库没有其他库的依赖,可以直接使用add_subdirectory引用二、有依赖的三方库的脚本不能在DevEco Studio

47610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用CEF(六)— 解读CEF的cmake工程配置

    第一个必填参数name,就是我们要编译的可执行程序target的名称; 可选参数WIN32、MACOS_BUNDLE。分别用于Windows平台和macOS平台可执行应用程序的构建。...可选参数EXCLUDE_FROM_ALL,表明整个项目构建的时候,排除当前这个target; 至于source等等就是头文件、源码文件了。...但是如没有必要,尽可能使用target_xxx来给指定的target配置。举一反三,CMake中还有很多的target_开头的指令,其目的都是针对某个指定的target的配置。...关于find_package,网上解析的文章很多,这里只简单说明下,CMake官方文档中提到find_package有两种搜索模式,其中一种就是模块搜索模式(Module mode),该搜索模式说明如下...libcef_dll/CMakeLists.txt 现在,让我们回到cef_binary_xxx/CMakeLists.txt,在find_package(CEF)之后,紧接着的就是add_subdirectory

    1.7K20

    从零开始编写一个cmake构建脚本

    :工程名需要大写版本号需要标明主版本号,次版本号以及补丁版本号,如: project(PROJECT_NAME VERSION 0.0.0) PROJECT_NAME工程的版本号时 0.0.0,该版本号会被三个...,比如CXX表示可以编译C++文件;C表示可以编译c文件;ASM表示可以编译汇编文件enable_language(CXX C ASM)配置测试用例可选变量配置自定义变量,默认不构建测试用例,可以由使用者通过传入参数打开测试用例构建选项...构建脚本,直接通过add_subdirectory()引用该三方库 add_subdirectory(xxx) # xxx是需要引入的三方库源码文件夹名字源码非cmake构建或者无法通过cmake...引用当前源码路径下的xxx库使用find_package方法来引用,此方法的使用限制参照IDE上find_package使用分析,使用方法: find_package(XXX REQUIRED)...库对外提供被find_package的能力install后,所有导出的头文件、动态库、静态库、可执行二进制、cmake文件都可以安装到指定路径下install(TARGETS ${TARGET_NAME

    51620

    CMake入门教程:让跨平台构建变得简单

    CMake(Qt、OpenCV、Boost等)减少重复工作 - 告别手动维护不同IDE的项目文件对于任何规模稍大的C/C++项目来说,合适的构建系统不再是可选项,而是必需品!...文件已经包含了三个基本命令:1. cmake_minimum_required - 声明所需的最低CMake版本2. project - 定义项目名称(和可选的版本、描述等)3. add_executable...CMake提供了find_package命令来查找和使用已安装的库。...,这里有一些进阶技巧和最佳实践:使用现代CMake - 避免使用过时的命令(如link_directories)和变量操作,而应使用目标属性(如target_link_libraries)创建包配置文件...(src) add_subdirectory(tests)使用现代CMake - 避免使用过时的命令(如link_directories)和变量操作,而应使用目标属性(如target_link_libraries

    1K10

    蓝桥ROS机器人课程之无限扩展∞∞∞(程序设计案例)

    现在简单扩展一下: 比如这里面分享的代码和书籍,案例直接或间接可用。 对教学而言十分方便,对于学生而言使用实践起来也很容易的。...使用: ​ git clone https://gitcode.net/ZhangRelay/ros_book.git ​ 将资源下载到蓝桥ROS的Code文件夹下: 解压缩源代码:  编译第三章案例...: 测试一下啊 当然,如果编译第四章案例会遇到错误,类似问题已经在博客:  这里复现,并重复一下:  将navigation中的对应包放入到指定位置: 再次编译,一切ok。...Call Stack (most recent call first): chapter4_tutorials/robot1_description/CMakeLists.txt:7 (find_package...CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not

    68120

    【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )

    /oboe) ② 将 Oboe 源码目录设置为工程的子路径 : add_subdirectory 告诉 CMake 到 OBOE_DIR 路径中查找该路径下的 CMakeLists.txt 构建脚本 ,.../oboe 指定的是编译后的二进制文件存放位置 ; add_subdirectory (${OBOE_DIR} ....将 Oboe 源码目录设置为工程的子路径 , # add_subdirectory 告诉 CMake 到 OBOE_DIR 路径中查找该路径下的 CMakeLists.txt 构建脚本 , # 编译该构建脚本中指定的源码.../oboe 指定的是编译后的二进制文件存放位置 ; add_subdirectory (${OBOE_DIR} ./oboe) # 4....链接函数库 , native-lib 是本应用中编译的动态库 , 这里链接 log 日志库 , oboe 高性能音频库 # 该 oboe 函数库就是上面 add_subdirectory 操作编译的

    1.6K00

    cmake:使用find_package查找libjpeg的静态库

    https://blog.csdn.net/10km/article/details/82931978 我们知道简单的使用命令find_package可以查找指定的package....对于经常会用到的 jpeg库turbojpeg,可以用find_package(JPEG REQUIRED)来查找。...(STATUS "JPEG_LIBRARIES=${JPEG_LIBRARIES}") endif() 但我们知道cmake默认查找到的是动态库,所以如果想查找libjpeg的静态库,这样是不行的。...其实FindJPEG.cmake脚本在设计时已经考虑到了这个问题,如下是FindJPEG.cmake脚本的代码片段,可以看到调用者可以通过JPEG_NAMES这个变量指定优先查找到的库名字。...所以如果想要指定优先使用静态库,前面的cmake脚本可以稍改一下,如下,就是在调用find_package之前设置JPEG_NAMES为想要的静态库名: # 查找libjpeg库,优先使用静态库 if(

    2.2K20

    CMake库打包以及支持find_package

    本文对CMake中库的打包,安装,导出以及支持find_package,使其能够很简单的应用到其他的项目中进行详细的总结。...MY_LIBRARY_DEBUG_MODE "whether or not debug mode is activated" OFF)# add subdiretoriesadd_subdirectory(src)add_subdirectory...(example)add_subdirectory(tool)add_subdirectory(test)这个文件中有一些option操作,这些配置选项能够讲相关配置写入到config.hpp.in中,...REQUIRED并非必须,但是在引用目标的时候就必须附加相应的变量。版本控制find_package()同样支持版本控制,你可以传入版本号作为第二个参数。...现在调用find_package(my_library 1.0 REQUIRED)这种形式,可以寻找1.0或者相兼容版本(如果你设置了兼容的版本号)的库。

    1.2K00

    CMake 秘籍(五)

    只包含一个命令: add_subdirectory(message) 跳转到message文件夹,我们再次看到管理我们对message库依赖的常用命令: 首先,我们调用find_package来找到一个合适的库版本...这可以通过这个选项来指定,它可以接受 Git 识别为“版本”信息的任何标识符,如 Git 提交 SHA、Git 标签,或者仅仅是一个分支名称。...准备工作 如第七章,项目结构化所示,我们将把项目结构化为树状。每个子目录都有一个CMakeLists.txt文件,其中包含与该目录相关的指令。...对于我们当前的目的,名称重整并不是真正的问题。Fortran 2003 标准为函数和子程序定义了一个bind属性,它接受一个可选的name参数。...Python 解释器: find_package(PythonInterp REQUIRED) 然后,我们包含账户子目录: add_subdirectory(account) 之后,我们定义单元测试:

    2.7K20
    领券