HarmonyOS 鸿蒙Next native侧代码 cmakelists.txt中不能使用find_package查找三方库吗

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next native侧代码 cmakelists.txt中不能使用find_package查找三方库吗

我在cmakelists.txt中需要依赖到protobuf 本地已经安装 在c++项目中可以找到并使用,但是在deveco studio中 cpp下 构建时

> hvigor ERROR: Failed :entry:default@BuildNativeWithCmake

> hvigor ERROR: Exceptions happened while executing: CMake Error at /Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/build-tools/cmake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)

Call Stack (most recent call first):

/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/build-tools/cmake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)

/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/build-tools/cmake/share/cmake-3.28/Modules/FindProtobuf.cmake:749 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)

CMakeLists.txt:10 (find_package)

Not searching for unused variables given on the command line.

– Configuring incomplete, errors occurred!


更多关于HarmonyOS 鸿蒙Next native侧代码 cmakelists.txt中不能使用find_package查找三方库吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
native侧代码 cmakelists.txt中可以使用find_package查找三方库,但是路径要是正确的路径

根据提供的报错信息,是protobuf的路径不对,提示找不到protobuf,需要检查下,请参考:https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/thirdparty/protobuf_v3.6.1/docs/hap_integrate.md#protobuf_v361%E9%9B%86%E6%88%90%E5%88%B0%E5%BA%94%E7%94%A8hap

也可以参考一个7z库的编译,步骤是类似的:https://gitee.com/igetcool/igcarchive/tree/master

更多关于HarmonyOS 鸿蒙Next native侧代码 cmakelists.txt中不能使用find_package查找三方库吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next的native侧开发中,CMakeLists.txt文件通常用于配置C/C++编译过程。关于在CMakeLists.txt中使用find_package查找三方库的问题,具体答案如下:

HarmonyOS的CMake集成环境可能不直接支持标准的find_package命令来查找并链接三方库,这主要是因为HarmonyOS构建系统有其特定的依赖管理和库链接机制。为了使用三方库,你可能需要手动指定库的路径和名称,通过link_directoriestarget_link_libraries等命令来链接库文件。

例如,如果你的三方库位于某个特定目录下,你可以在CMakeLists.txt中这样配置:

link_directories(/path/to/your/lib)
target_link_libraries(your_target_name your_library_name)

其中/path/to/your/lib是库文件所在的目录,your_target_name是你的目标可执行文件或库名,your_library_name是你要链接的库名(通常不包括前缀lib和后缀如.so.a等)。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部