|
@@ -556,6 +556,54 @@ command is sufficient:
|
|
|
|
|
|
|
|
cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS
|
|
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
|
|
Code Signing
|
|
|
^^^^^^^^^^^^
|
|
^^^^^^^^^^^^
|
|
|
|
|
|
|
@@ -592,4 +640,14 @@ Please note that checks made during configuration were performed against
|
|
|
the configure-time SDK and might not hold true for other SDKs. Commands
|
|
the configure-time SDK and might not hold true for other SDKs. Commands
|
|
|
like :command:`find_package`, :command:`find_library`, etc. store and use
|
|
like :command:`find_package`, :command:`find_library`, etc. store and use
|
|
|
details only for the configured SDK/platform, so they can be problematic
|
|
details only for the configured SDK/platform, so they can be problematic
|
|
|
-if wanting to switch between device and simulator builds.
|
|
|
|
|
|
|
+if wanting to switch between device and simulator builds. You can follow
|
|
|
|
|
+the next rules to make device + simulator configuration work:
|
|
|
|
|
+
|
|
|
|
|
+- Use explicit ``-l`` linker flag,
|
|
|
|
|
+ e.g. ``target_link_libraries(foo PUBLIC "-lz")``
|
|
|
|
|
+
|
|
|
|
|
+- Use explicit ``-framework`` linker flag,
|
|
|
|
|
+ e.g. ``target_link_libraries(foo PUBLIC "-framework CoreFoundation")``
|
|
|
|
|
+
|
|
|
|
|
+- Use :command:`find_package` only for libraries installed with
|
|
|
|
|
+ :variable:`CMAKE_IOS_INSTALL_COMBINED` feature
|