編譯環(huán)境:
? ? Mac OS?10.12.6
? ? opencv 3.2
? ? Xcode 9.2
編譯默認(rèn)版本
1.從opencv下載源碼https://github.com/opencv/opencv.git
2.在目錄 opencv/platforms/ios 中可以看到readme.txt
按照文件說(shuō)明執(zhí)行下面的命令
運(yùn)行命令:cd ~/<my_working_directory>
? ? ? ? ? ? ? : python opencv/platforms/ios/build_framework.py ios
等待20~30分鐘如果沒(méi)有報(bào)錯(cuò),恭喜你編譯成功断序,會(huì)自動(dòng)在當(dāng)前目錄中創(chuàng)建iOS文件纺腊,opencv.framework在這個(gè)文件中。
編譯改進(jìn)版
?????更改編譯腳本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的大小,編譯時(shí)鏈進(jìn)去的內(nèi)容也較少姿锭。
2.?默認(rèn)編譯的opencv.framework中塔鳍,將模擬器和真機(jī)的部分全部打包為一個(gè)framework 在(["armv7", "armv7s", "arm64"], "iPhoneOS"),(["i386", "x86_64"], "iPhoneSimulator")這里可以選擇打包的具體指令集,可以只編譯模擬器版本即保留(["i386", "x86_64"], "iPhoneSimulator")呻此÷秩遥可以只編譯真機(jī)版本即保留(["armv7", "armv7s", "arm64"], "iPhoneOS")。根據(jù)自己的需要更改趾诗。單純的真機(jī)版會(huì)小50M左右蜡感。
如果報(bào)錯(cuò):
1.libtool: unrecognized option `-static'
只有 mac 自帶的 libtool 才有 -static 這個(gè)參數(shù)蹬蚁,說(shuō)明你的安裝了兩個(gè)libtool默認(rèn)鏈接到的不是你系統(tǒng)的libtool。
?運(yùn)行命令:which libtool? 查看所在目錄郑兴。
系統(tǒng)默認(rèn)的libtool 所在目錄為?/usr/bin/libtool
解決辦法:(1).卸載libtool? (2)更改libtool默認(rèn)鏈接? ?(3)最直接的方法犀斋,將libtool重新命名
其它錯(cuò)誤暫時(shí)沒(méi)遇到,歡迎留言情连。
歡迎轉(zhuǎn)發(fā)叽粹!