编译环境:
Mac OS 10.12.6
opencv 3.2
Xcode 9.2
编译默认版本
1.从opencv下载源码https://github.com/opencv/opencv.git
2.在目录 opencv/platforms/ios 中可以看到readme.txt
按照文件说明执行下面的命令
运行命令:cd ~/<my_working_directory>
: python opencv/platforms/ios/build_framework.py ios
等待20~30分钟如果没有报错,恭喜你编译成功,会自动在当前目录中创建iOS文件,opencv.framework在这个文件中。
编译改进版
更改编译脚本build_framework.py ,在脚本中我们可以看到如下:
parser.add_argument('--without', metavar='MODULE', default=[], action='append', help='OpenCV modules to exclude from the framework')
b = iOSBuilder(args.opencv, args.contrib, args.dynamic, args.bitcodedisabled, args.without,
[
(["armv7", "arm64"], "iPhoneOS"),
]ifos.environ.get('BUILD_PRECOMMIT',None)else
[
(["armv7", "armv7s", "arm64"], "iPhoneOS"),
(["i386", "x86_64"], "iPhoneSimulator"),
])
1.在defaut中(黑体所示)可以添加编译模块,只编译需要的opencv中的模块如图所示:这样可以减小framework的大小,编译时链进去的内容也较少。

2. 默认编译的opencv.framework中,将模拟器和真机的部分全部打包为一个framework 在(["armv7", "armv7s", "arm64"], "iPhoneOS"),(["i386", "x86_64"], "iPhoneSimulator")这里可以选择打包的具体指令集,可以只编译模拟器版本即保留(["i386", "x86_64"], "iPhoneSimulator")。可以只编译真机版本即保留(["armv7", "armv7s", "arm64"], "iPhoneOS")。根据自己的需要更改。单纯的真机版会小50M左右。
如果报错:
1.libtool: unrecognized option `-static'
只有 mac 自带的 libtool 才有 -static 这个参数,说明你的安装了两个libtool默认链接到的不是你系统的libtool。
运行命令:which libtool 查看所在目录。
系统默认的libtool 所在目录为 /usr/bin/libtool
解决办法:(1).卸载libtool (2)更改libtool默认链接 (3)最直接的方法,将libtool重新命名
其它错误暂时没遇到,欢迎留言。
欢迎转发!
网友评论