[cmake-developers] Patch: install universal iOS libraries
Ruslan Baratov
ruslan_baratov at yahoo.com
Thu Sep 24 06:10:29 EDT 2015
Hi,
Patches help to install universal iOS (device + simulator) libraries by
triggering some extra instructions (build + fuse) after "regular"
library installation finished. This behavior controlled by CMake
variable CMAKE_IOS_INSTALL_UNIVERSAL_LIBS.
= Example =
> cat CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(Foo)
add_library(foo foo.cpp)
install(TARGETS foo DESTINATION lib)
> cat toolchain.cmake
set(CMAKE_MACOSX_BUNDLE YES)
set(CMAKE_OSX_SYSROOT "iphoneos")
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.example")
> rm -rf _builds _install
> cmake -H. -B_builds -GXcode -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
-DCMAKE_INSTALL_PREFIX=_install ...
= Current functionality =
Device one arch (default):
> cmake ...
> cmake --build _builds --target install
> lipo -info _install/lib/libfoo.a
Non-fat file: _install/lib/libfoo.a is architecture: armv7
Simulator one arch:
> cmake ...
> cmake --build _builds --target install -- -sdk iphonesimulator
> lipo -info _install/lib/libfoo.a
Non-fat file: _install/lib/libfoo.a is architecture: x86_64
Device multi arch:
> cmake ... -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO
> cmake --build _builds --target install
> lipo -info _install/lib/libfoo.a
Architectures in the fat file: _install/lib/libfoo.a are: armv7 arm64
Simulator multi arch:
> cmake ... -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO
> cmake --build _builds --target install -- -sdk iphonesimulator
> lipo -info _install/lib/libfoo.a
Architectures in the fat file: _install/lib/libfoo.a are: i386 x86_64
= This upgrade =
Device + simulator one arch:
> cmake ... -DCMAKE_IOS_INSTALL_UNIVERSAL_LIBS=YES
> cmake --build _builds --target install
> lipo -info _install/lib/libfoo.a
Architectures in the fat file: _install/lib/libfoo.a are: armv7 x86_64
Device + simulator multi arch:
> cmake ... -DCMAKE_IOS_INSTALL_UNIVERSAL_LIBS=YES
-DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO
> cmake --build _builds --target install
> lipo -info _install/lib/libfoo.a
Architectures in the fat file: _install/lib/libfoo.a are: i386 armv7
x86_64 arm64
Let me know if this looks acceptable, then I will add documentation part
and tests.
Thanks, Ruslo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Get-target-name-for-universal-iOS-library-install.patch
Type: text/x-patch
Size: 2268 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20150924/15042efa/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-CMake-module-for-universal-iOS-library-install.patch
Type: text/x-patch
Size: 9361 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20150924/15042efa/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Universal-iOS-library-install.patch
Type: text/x-patch
Size: 2834 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20150924/15042efa/attachment-0002.bin>
More information about the cmake-developers
mailing list