HarmonyOS鸿蒙Next中cmake如何正确引入第三方静态库

HarmonyOS鸿蒙Next中cmake如何正确引入第三方静态库 我在重新编译我的c库时,需要用到第三方(.a)静态文件,请问cmake这边要如何正确引用,我该如何编译我的cmakelist文件

3 回复

需要做下面几个配置:

1 在har/hsp模块的build-profile.json5中buildOption/nativeLib/headerPath指定接口文件目录

buildOption: {
 nativeLib: {
  headerPath: "src/main/cpp/include"
 }
}

2 调用方依赖har/hsp包

// oh-package.json
dependencies: {
 curl: "1.0.0"
}

3 调用方配置cmake链接so,格式为packageName::soName

target_link_libraries(entry PUBLIC curl::curl)

引用三方HAR,包括从仓库进行安装、从本地文件夹和本地压缩包中进行安装三种方式,可参考链接

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-har-import-V5

可参考如下链接编译cmakelist文件

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-ndk-development-V5

更多关于HarmonyOS鸿蒙Next中cmake如何正确引入第三方静态库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用CMake引入第三方静态库的步骤如下:

  1. 将静态库文件放入项目目录:将第三方静态库文件(通常是.a文件)放入项目的libs目录或其他指定目录。

  2. CMakeLists.txt中指定库路径:使用add_library命令引入静态库,并指定库的路径。例如:

    add_library(third_party_lib STATIC IMPORTED)
    set_target_properties(third_party_lib PROPERTIES
        IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/libthird_party.a)
    
  3. 链接静态库到目标可执行文件或库:使用target_link_libraries命令将静态库链接到你的目标可执行文件或库。例如:

    target_link_libraries(your_target PRIVATE third_party_lib)
    
  4. 包含头文件:如果静态库需要头文件,使用include_directories命令指定头文件路径。例如:

    include_directories(${CMAKE_SOURCE_DIR}/include)
    
  5. 构建项目:使用CMake构建项目,确保静态库正确引入并链接。

通过以上步骤,你可以在HarmonyOS鸿蒙Next项目中正确引入并链接第三方静态库。

在HarmonyOS鸿蒙Next中,使用CMake引入第三方静态库的步骤如下:

  1. 放置库文件:将第三方静态库(.a文件)和头文件放入项目的libs目录中。

  2. 配置CMakeLists.txt

    • 使用add_library指定库名称和路径。
    • 使用target_include_directories添加头文件路径。
    • 使用target_link_libraries将库链接到目标。

示例:

add_library(my_static_lib STATIC IMPORTED)
set_target_properties(my_static_lib PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/libmylib.a)

target_include_directories(my_app PRIVATE ${CMAKE_SOURCE_DIR}/libs/include)
target_link_libraries(my_app my_static_lib)
  1. 编译:确保路径和库名称正确后,进行编译。

通过这些步骤,即可在HarmonyOS鸿蒙Next项目中正确引入并使用第三方静态库。

回到顶部