git-subtree-dir: external/nng git-subtree-split: 29b73962b939a6fbbf6ea8d5d7680bb06d0eeb99
65 lines
1.7 KiB
Text
65 lines
1.7 KiB
Text
ifdef::env-github[]
|
|
:note-caption: :information_source:
|
|
endif::[]
|
|
|
|
= Building for iOS (and tvOS, watchOS)
|
|
|
|
NOTE: This work has had only minimal validation. As always, _caveat emptor_.
|
|
|
|
== Pre-Requisites
|
|
|
|
macOS::
|
|
|
|
As far as we know, the only way to build iOS applications is on a
|
|
macOS host system.
|
|
|
|
Xcode::
|
|
|
|
You will need Xcode. We tested this with Xcode 9.3.
|
|
|
|
CMake::
|
|
|
|
We tested this with CMake 3.9. Other versions may work.
|
|
|
|
iOS cmake toolchain file::
|
|
|
|
At the time of this writing (May 28, 2018), the toolchain file
|
|
located at https://github.com/leetal/ios-cmake is appears to work
|
|
reasonably well.
|
|
|
|
== Steps
|
|
|
|
When building for iOS and similar targets, only static libraries may be built.
|
|
(This is good for avoiding dependency nightmares anyway.)
|
|
|
|
Using the above toolchain file, we can build for iOS using
|
|
the CMake standard CMAKE_TOOLCHAIN_FILE macro, and using
|
|
the IOS_PLATFORM macro to set the target. (See the iOS CMake
|
|
toolchain README for valid options; we select "OS" for iOS.)
|
|
|
|
The test suite and command line tools will automatically be removed
|
|
from the build, since they aren't interesting or useful in cross-compile
|
|
environment. (There is no way to run them.)
|
|
|
|
If you have checked out this repository in $SRC, the following should work:
|
|
|
|
[source, sh]
|
|
----
|
|
% cd $SRC
|
|
% mkdir ios-build
|
|
% cd ios-build
|
|
% git clone https://github.com/leetal/ios-cmake
|
|
% cmake -G Xcode \
|
|
-DCMAKE_TOOLCHAIN_FILE=`pwd`/ios-cmake/ios.toolchain.cmake \
|
|
-DIOS_PLATFORM=OS ..
|
|
----
|
|
|
|
Then you can build using Xcode, or simply use cmake to drive the build:
|
|
|
|
[source, sh]
|
|
----
|
|
% cmake --build .
|
|
----
|
|
|
|
Extra effort may be required to enable the use of mbedTLS (NNG does not
|
|
at the time of writing support Secure Transport. See issue #497 for status.)
|