背景
我的目标是为 ios 编译 OpenCV 并支持 armv7s(s 是最难的部分)架构,但一直无法取得任何进展。我最近的理论是问题在于库附带的 cmake 文件使用 gcc 作为编译器,我认为它不支持 armv7s(如果我错了,请告诉我)。但是,我对 cmake 完全陌生,并且无法更改编译器。
我怀疑编译器的原因是因为该行
set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS")
据我所知应该包括armv7s。将该行更改为
set (CMAKE_OSX_ARCHITECTURES "armv6;armv7;armv7s;i386" CACHE string "Build architecture for iOS")
没有效果。
我知道这里、这里和这里都有关于如何设置编译器的说明。我的问题是我正在尝试更改现有的 cmake 系统,但不知道我的更改可能会产生什么后果。有问题的代码可以在这里下载。为了构建框架,我在 OpenCV-2.4.2/ios 中运行 python 脚本
python build_framework.py ~/Desktop
据我所知,相关的 cmake 文件位于 OpenCV-2.4.2/ios/cmake 中。只有 3 个,而且都很短。我最近的尝试是更改工具链中的两行
CMAKE_FORCE_C_COMPILER (gcc gcc)
CMAKE_FORCE_CXX_COMPILER (g++ g++)
至
SET (DEVROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer")
SET (CC "${DEVROOT}/usr/bin/llvm-gcc-4.2")
SET (CXX "${DEVROOT}/usr/bin/llvm-g++-4.2")
CMAKE_FORCE_C_COMPILER (${CC} CLang)
CMAKE_FORCE_CXX_COMPILER (${CXX} CLang)
试图复制这个SO 问题。
问题
- 我的第一个也是最重要的问题是,这是否超出了我的理解范围。我一直假设更改编译器/目标体系结构将是在某处设置一个简单的标志,但我越来越不相信这是真的。此外,还有一个完整的目录 OpenCV-2.4.2/cmake 充满了更大的 cmake 文件,我一直在避免这些文件,希望我不必担心它们的内容。这是我能在不到 10 小时内解决的问题吗?
- 如果您对上一个问题的回答是肯定的,您能给我一些指导吗?推荐阅读?我是否有理由忽略 OpenCV-2.4.2/cmake 的内容?我已经在黑暗中拍摄了很长一段时间,但没有成功。
- 如果事实证明这和我最初希望的一样简单,我该怎么做?
更新
我从来没有弄清楚如何做到这一点,但是这里有一个库的 xcode 版本,可以从中轻松更改编译设置。