ios模块化编译opencv.framework

编译环境:

    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 ~/

              : 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的大小,编译时链进去的内容也较少。


ios模块化编译opencv.framework_第1张图片

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重新命名

其它错误暂时没遇到,欢迎留言。

欢迎转发!


你可能感兴趣的:(ios模块化编译opencv.framework)