gpt4 book ai didi

c++ - 如何使用 iOS 中 OpenCV 框架的自定义路径在 CMake 中查找包

转载 作者:可可西里 更新时间:2023-11-01 03:29:26 25 4
gpt4 key购买 nike

我有 CMake 3.0 和我自己的 C++ iOS 项目,它们使用 OpenCV 作为依赖项。该项目生成一组由应用程序项目加载的库。

在我的 CMake 中,我尝试寻找 OpenCV 依赖项,它在 Windows 和 Linux 中自动执行,但在 Android 和 iOS 中我必须设置正确的包。对于 Android,使用此代码设置 ${OpenCV_dir}/sdk/native/jni works 属性:

SET(OpenCV_DIR NOT_FOUND CACHE PATH "Path to use OpenCV")
IF(OpenCV_DIR STREQUAL NOT_FOUND)
FIND_PACKAGE( OpenCV PATHS ${OpenCV_DIR})
MESSAGE(FATAL_ERROR "--***-- Warning: Install and configure path to prebuilt OpenCVConfig.cmake")
ENDIF()

在 iOS 中,这不起作用。我通常在没有找到 OpenCV 的情况下创建项目 Xcode 项目,然后我拖放框架并使用自定义路径手动配置变量框架搜索路径,在

/Users/Piperoman/Libraries/opencv2.4.9IOS

但是使用 CMake 代码没有找到它。

定位框架有什么问题?

最佳答案

What is the problem locating the framework?

find_package 寻找框架目录中不存在的 OpenCVConfig.cmake 文件,即 OpenCV iOS 根本不是这样设计的。

您可以通过以下方式验证:

> wget http://sourceforge.net/projects/opencvlibrary/files/opencv-ios/3.0.0/opencv2.framework.zip
> unzip opencv2.framework.zip
> find opencv2.framework -type f -name "*.cmake"
# nothing found

与安卓相比:

> wget http://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.0.0/OpenCV-3.0.0-android-sdk-1.zip
> unzip OpenCV-3.0.0-android-sdk-1.zip
> find OpenCV-android-sdk -type f -name "*.cmake"
...
OpenCV-android-sdk/sdk/native/jni/OpenCVConfig.cmake
...

如果您正在寻找 CMake 友好的解决方案,您可以尝试 Hunter包管理器,请参阅 pkg.opencv :

hunter_add_package(OpenCV)
find_package(OpenCV REQUIRED)

target_link_libraries(... PRIVATE ${OpenCV_LIBS})

猎人 iOS 说明

自版本3.5 CMake 支持安装通用(多架构、设备 + 模拟器)iOS 库(参见 CMAKE_IOS_INSTALL_COMBINED )。

Hunter 自版本 0.13.1 开始使用此功能.

选择iOS toolchain ,例如ios-8-2:

> git clone https://github.com/ruslo/polly
> ls polly/ios-8-2.cmake

CMakeLists.txt 将 looks like this :

cmake_minimum_required(VERSION 3.5)

include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.13.1.tar.gz"
SHA1 "bd7711df37a53134e642220d2f649a69cb34dde3"
)

project(TestOpenCV)

hunter_add_package(OpenCV)
find_package(OpenCV REQUIRED)

add_executable(foo foo.cpp)
target_link_libraries(foo PUBLIC ${OpenCV_LIBS})

构建它:

> cmake -H. -B_builds -DCMAKE_TOOLCHAIN_FILE=/.../polly/ios-8-2.cmake -GXcode
> cmake --build _builds --config Release

或者您可以使用 build.py选择工具链和生成器的脚本:

> git clone https://github.com/ruslo/polly
> export PATH=`pwd`/polly/bin:$PATH
> which build.py

构建它(build.py 变体):

> build.py --toolchain ios-8-2 --verbose --config Release

关于c++ - 如何使用 iOS 中 OpenCV 框架的自定义路径在 CMake 中查找包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com