|
|
(8 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
− | == Requirements ==
| + | {{Template:MovedToWebpage|https://vcmi.eu/developers/Building_iOS/}} |
− | # '''macOS'''
| |
− | # Xcode: https://developer.apple.com/xcode/
| |
− | # CMake 3.21+: <code>brew install --cask cmake</code> or get from https://cmake.org/download/
| |
− | | |
− | == Obtaining dependencies ==
| |
− | Follow instructions at https://github.com/kambala-decapitator/vcmi-ios-depends
| |
− | | |
− | == Configuring project ==
| |
− | Only Xcode generator is supported!
| |
− | | |
− | As a minimum, you must pass the following variables to CMake:
| |
− | | |
− | * <code>BUNDLE_IDENTIFIER_PREFIX</code>: unique bundle identifier prefix, something like <code>com.MY-NAME</code>
| |
− | * <code>CMAKE_PREFIX_PATH</code>: path to the downloaded dependencies, e.g. <code>~/Downloads/vcmi-ios-depends/build/iphoneos</code>
| |
− | | |
− | There're two [https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html CMake presets]: for device and for simulator, named <code>ios-device</code> and <code>ios-simulator</code> respectively. You can also create your local "user preset" to avoid typing variables each time, see example [https://gist.github.com/kambala-decapitator/59438030c34b53aed7d3895aaa48b718 here].
| |
− | | |
− | Open terminal and <code>cd</code> to the directory with source code. Configuration example for device:
| |
− | <nowiki>cmake --preset ios-device \
| |
− | -D BUNDLE_IDENTIFIER_PREFIX=com.MY-NAME \
| |
− | -D CMAKE_PREFIX_PATH=~/Downloads/vcmi-ios-depends/build/iphoneos</nowiki>
| |
− | | |
− | By default build directory containing Xcode project will appear at <code>../build-ios-device</code>, but you can change it with <code>-B</code> option.
| |
− | | |
− | === Building for device ===
| |
− | To be able to build for iOS device, you must also specify codesigning settings. If you don't know your development team ID, open the generated Xcode project, open project settings (click <code>VCMI</code> with blue icon on the very top in the left panel with files), select <code>vcmiclient</code> target, open <code>Signing & Capabilities</code> tab and select yout team. Now you can copy the value from <code>Build Settings</code> tab - <code>DEVELOPMENT_TEAM</code> variable (paste it in the Filter field on the right) - click the greenish value - Other... - copy. Now you can pass it in <code>CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM</code> variable when configuring the project to avoid selecting the team manually every time CMake re-generates the project.
| |
− | | |
− | Advanced users who know exact private key and provisioning profile to sign with, can use <code>CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY</code> and <code>CMAKE_XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER</code> variables instead. In this case you must also pass
| |
− | | |
− | <code>-D CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE=Manual</code>.
| |
− | | |
− | == Building project ==
| |
− | | |
− | === From Xcode IDE ===
| |
− | Open <code>VCMI.xcodeproj</code> from the build directory, select <code>vcmiclient</code> scheme (the only one with nice icon) with your destination device/simulator and hit Run (Cmd+R).
| |
− | | |
− | You must also install game files, see [[Installation on iOS]].
| |
− | | |
− | === From command line ===
| |
− | <code>cmake --build <path to build directory> --target vcmiclient -- -quiet</code>
| |
− | | |
− | You can pass additional xcodebuild options after the <code>--</code>. Here <code>-quiet</code> is passed to reduce amount of output.
| |
− | | |
− | Alternatively, you can invoke <code>xcodebuild</code> directly.
| |
− | | |
− | There's also <code>ios-release</code> configure and build preset that is used to create release build on CI.
| |
− | | |
− | == Creating ipa file for distribution ==
| |
− | Invoke <code>cpack</code> after building:
| |
− | | |
− | <code>cpack -C Release</code>
| |
− | | |
− | This will generate zip file, you need to change its extension to <code>ipa</code> manually or use [https://github.com/vcmi/vcmi/blob/develop/ios/zip2ipa.sh simple script] that we have in the repository at <code>ios/zip2ipa.sh</code>.
| |