You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake NDK项目添加log库编译报错:找不到lib_opencv目标

问题原因与解决办法

你遇到的set_target_properties Can not find target to add properties to: lib_opencv错误,核心原因是把自定义共享库和导入库写在了同一个add_library命令里,CMake无法识别lib_opencv这个导入目标,导致后续设置属性失败。

修正步骤

必须将导入库lib_opencv与你的自定义库native_opencv分开定义,不能混在同一个add_library中。以下是修正后的完整CMakeLists.txt:

cmake_minimum_required(VERSION 3.10.2)
project(OPENcv_app)

include_directories(../include)

# OpenCV 配置
set(OpenCV_STATIC ON)
set(OpenCV_DIR c:/tools/OpenCV-android-sdk/sdk/native/jni)
find_package(OpenCV REQUIRED)

# 单独声明导入库 lib_opencv
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION 
    ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java4.so)

# 定义你的自定义共享库 native_opencv
add_library(
    native_opencv SHARED
    # 源文件列表
    ../ios/Classes/ArucoDetector/ArucoDetector.cpp
    ../ios/Classes/native_opencv.cpp
)

target_include_directories(
    native_opencv PRIVATE
    ../ios/Classes/ArucoDetector
)

# 查找系统 log 库
find_library(log-lib log)

# 链接所有依赖库
target_link_libraries(
    native_opencv
    ${OpenCV_LIBS}
    lib_opencv
    ${log-lib}
)

关键修改说明

  1. 拆分导入库与自定义库的声明:先单独用add_library(lib_opencv SHARED IMPORTED)声明导入目标,再通过set_target_properties指定其路径,让CMake能识别这个目标。
  2. 独立定义自定义库:native_opencv的add_library只包含自身的源文件,不再混杂导入库的声明。
  3. log库逻辑保留:你原本查找和链接log库的代码是正确的,无需修改。

额外提示

如果后续出现链接冲突(比如重复定义),可能是${OpenCV_LIBS}已经包含了libopencv_java4.so,此时可以移除lib_opencv的导入和链接代码,仅保留${OpenCV_LIBS}即可。

内容的提问来源于stack exchange,提问作者Ayush Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:18:29