OpenAL编译iOS和Mac库

需要用到 https://github.com/leetal/ios-cmake

源码修正

在coreaudio.c中把下面的代码

AudioObjectPropertyAddress propertyAddress;

移动到 #if !TARGET_OS_IOS

修改CMakeLists.txt,屏蔽下面的检查

# CHECK_SYMBOL_EXISTS(aligned_alloc    stdlib.h HAVE_ALIGNED_ALLOC)

aligned_alloc 在ios13支持,早期的iOS会crash

编译

cmake 需要3.14+
每个target单独编译,用combine模式有错误。

arm64

cmake .. -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DDEPLOYMENT_TARGET=7.0 -DPLATFORM=OS64
make OpenAL
make common

armv7

cmake .. -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DDEPLOYMENT_TARGET=7.0 -DARCHS=armv7

x86_64

 cmake .. -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DDEPLOYMENT_TARGET=7.0 -DPLATFORM=SIMULATOR64

i386

cmake .. -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DDEPLOYMENT_TARGET=7.0 -DPLATFORM=SIMULATOR

Mac x86_84

cmake .. -DLIBTYPE=STATIC -DALSOFT_INSTALL=OFF -DDEPLOYMENT_TARGET=10.9

整合库

新建sh脚本,放到库目录下运行

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LIPO="xcrun -sdk iphoneos lipo"
STRIP="xcrun -sdk iphoneos strip"

$LIPO -create "$DIR"/libcommon-*.a -output "$DIR"/libcommon.a
$STRIP -S "$DIR"/libcommon.a
$LIPO -info "$DIR"/libcommon.a

$LIPO -create "$DIR"/libopenal-*.a -output "$DIR"/libopenal.a
$STRIP -S "$DIR"/libopenal.a
$LIPO -info "$DIR"/libopenal.a

标签: iOS

添加新评论