Browse Source

Help: Example of tweaking iOS/tvOS/watchOS build

CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_DEPLOYMENT_TARGET variables
can be used to tweak iOS/tvOS/watchOS build
Ruslan Baratov 6 years ago
parent
commit
f7d602b572
1 changed files with 48 additions and 0 deletions
  1. 48 0
      Help/manual/cmake-toolchains.7.rst

+ 48 - 0
Help/manual/cmake-toolchains.7.rst

@@ -556,6 +556,54 @@ command is sufficient:
 
   cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS
 
+Variable :variable:`CMAKE_OSX_ARCHITECTURES` can be used to set architectures
+for both device and simulator. Variable :variable:`CMAKE_OSX_DEPLOYMENT_TARGET`
+can be used to set an iOS/tvOS/watchOS deployment target.
+
+Next configuration will install fat 5 architectures iOS library
+and add the ``-miphoneos-version-min=9.3``/``-mios-simulator-version-min=9.3``
+flags to the compiler:
+
+.. code-block:: console
+
+  $ cmake -S. -B_builds -GXcode \
+      -DCMAKE_SYSTEM_NAME=iOS \
+      "-DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64;i386;x86_64" \
+      -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
+      -DCMAKE_INSTALL_PREFIX=`pwd`/_install \
+      -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO \
+      -DCMAKE_IOS_INSTALL_COMBINED=YES
+
+Example:
+
+.. code-block:: cmake
+
+  # CMakeLists.txt
+  cmake_minimum_required(VERSION 3.14)
+  project(foo)
+  add_library(foo foo.cpp)
+  install(TARGETS foo DESTINATION lib)
+
+Install:
+
+.. code-block:: console
+
+    $ cmake --build _builds --config Release --target install
+
+Check library:
+
+.. code-block:: console
+
+    $ lipo -info _install/lib/libfoo.a
+    Architectures in the fat file: _install/lib/libfoo.a are: i386 armv7 armv7s x86_64 arm64
+
+.. code-block:: console
+
+    $ otool -l _install/lib/libfoo.a | grep -A2 LC_VERSION_MIN_IPHONEOS
+          cmd LC_VERSION_MIN_IPHONEOS
+      cmdsize 16
+      version 9.3
+
 Code Signing
 ^^^^^^^^^^^^