[cmake-developers] [PATCH] iOS Framework Bundle support
Gregor Jasny
gjasny at googlemail.com
Tue Nov 10 15:54:07 EST 2015
Hello,
On 10/11/15 16:22, Bartosz Kosiorek wrote:
> My name is Bartosz Kosiorek and I'm TomTom developer and Open Source enthusiast.
I'm Gregor a part time contributor to CMake. During the last months I
mostly worked on Xcode support.
> Last time in our products, we notice that cmake is not creating correct iOS Frameworks Bundle.
> For iOS Frameworks, not versioned Bundle is needed, eg.:
>
> iOSFramework.framework/
> iOSFramework
> Info.plist
> Headers
>
>
>
> Unfortunately with current version of CMake (3.4.0), it produces OS X Framework Bundle, with versions inside, eg.:
>
> MyFramework.framework/
> MyFramework -> Versions/Current/MyFramework
> Resources -> Versions/Current/Resources
> Versions/
> A/
> MyFramework
> Headers
> Resources/
> Info.plist
> Current -> A
>
>
>
> You could test it with my example project in attachment (cmake_shared_ios_framework.zip).
Unfortunately I cannot reproduce the problem. Could you please write
down the exact steps you took to compile the example in the zip file?
Please also Xcode and cmake version.
That's what I see (cmake master, Xcode generator and Xcode 7.1):
$ find _build/shared_empty/mul/Debug-iphonesimulator/mul.framework
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/Headers
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/Headers/mul.h
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/Info.plist
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/Modules
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/Modules/module.modulemap
_build/shared_empty/mul/Debug-iphonesimulator/mul.framework/mul
> The iOS Application Bundle was already fixed in CMake 3.4.0. Unfortunately still iOS Frameworks are not produced correctly (Xcode refuses to sign such Frameworks if you would like to push it into iOS device).
>
> In attachment I added solution to produce correct iOS Framework (for OSX Frameworks will be produced normally).
>
>
>
> Could you please give some comment about that?
>
> Do you think architecture of that solution is correct?
I'd go for an early return from cmOSXBundleGenerator::CreateFramework if
we're building for iOS. The code of CreateIOSFramework is just too similar.
> I would like to do next:
>
> - Refactor code, to have more explicitly names (OSX, iOS or Apple)
>
> - Update documentation
>
> - add some unit tests for creating iOS Frameworks
I would like to see a test for that topic. If you'd like to try please
have a look at:
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=744e6c497c01cb3a3129ca66d1cabfa83e17dbd4
https://cmake.org/gitweb?p=cmake.git;a=tree;f=Tests/RunCMake/XcodeProject;hb=HEAD
https://cmake.org/gitweb?p=cmake.git;a=blob;f=Tests/RunCMake/README.rst;hb=HEAD
You need to build cmake via the Xcode generator and run the tests.
During development you can filter just for the XcodeProject tests:
bin/Debug/ctest -R RunCMake.XcodeProject --verbose
Thanks,
Gregor
More information about the cmake-developers
mailing list