Closed4

zxing-cppをios用にビルドする手順

nabeyangnabeyang
$ git clone https://github.com/nnabeyang/zxing-cpp.git
$ cd zxing-cpp
$ git checkout -b ios origin/ios 
$ mkdir -p build/bin
$ curl -OL https://raw.githubusercontent.com/leetal/ios-cmake/master/ios.toolchain.cmake
$ touch build_ios.bash
nabeyangnabeyang
build_ios.bash
#!/bin/bash

cmake -Sios -G Xcode .. \
    -B bin/ios_arm64 \
    -DDEPLOYMENT_TARGET=9.0 \
    -DPLATFORM=OS64 \
    -DBUILD_WRITERS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_BLACKBOX_TESTS=OFF \
    -DBUILD_SHARED_LIBS=OFF \
    -DBUILD_IOS_LIB=ON  \
    -DCMAKE_TOOLCHAIN_FILE=./build/ios.toolchain.cmake

cmake --build ./bin/ios_arm64 --config Release
cmake -Sios -G Xcode .. \
    -B bin/ios_x86_64 \
    -DDEPLOYMENT_TARGET=9.0 \
    -DPLATFORM=SIMULATOR64 \
    -DBUILD_WRITERS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_BLACKBOX_TESTS=OFF \
    -DBUILD_SHARED_LIBS=OFF \
    -DBUILD_IOS_LIB=ON  \
    -DCMAKE_TOOLCHAIN_FILE=./build/ios.toolchain.cmake
cmake --build ./bin/ios_x86_64 --config Release


xcodebuild -create-xcframework \
    -library bin/ios_arm64/libZXing.a \
    -headers ../wrappers/ios/include \
    -library bin/ios_x86_64/libZXing.a \
    -headers ../wrappers/ios/include \
    -output ZXing.xcframework
nabeyangnabeyang
$ chmod +x build_ios.bash
$ ./build_ios.bash

以上の操作でZXing.xcframeworkbuild_ios.bashと同じディレクトリに出来上がる。SPMで利用する前提の場合はこれをzipで圧縮してgithubのリリースとかに添付する。

nabeyangnabeyang

SPMでZXing.xcframeworkを使うときはPackage.swiftの中のtargetsbinaryTargetを追加する。

        .binaryTarget(
            name: "ZXing",
            url: "https://github.com/nnabeyang/zxing-cpp/releases/download/ios-v0.0.2/ZXing.xcframework.zip",
            checksum: "ae6ce97c6ad85dcd2afad2ba034db09090bd4dcacf94807b12d1624ae722acf5")

checksumの確認の仕方は一度ZXing.xcframework.zipを落としてswiftコマンドで確かめる。

$ cd
$ curl -OL https://github.com/nnabeyang/zxing-cpp/releases/download/ios-v0.0.2/ZXing.xcframework.zip
$ cd /path/to/project
$ swift package compute-checksum ~/ZXing.xcframework.zip 

プロジェクトの外でチェックサムを計算しようとするとerror: root manifest not foundというエラーが出る。
ZXing.xcframework.zipの利用方法の完全な例は次のプロジェクトを参照
https://github.com/nnabeyang/zxing-swift

このスクラップは2021/06/12にクローズされました