🌟

Swift PackageでARCをオフにする

2022/02/16に公開

モチベーション的にはObjective-Cを競プロでやるときにARCが効かないということで、開発環境もそれに合わせたいということです。swift buildで動かすためには、次のオプションを追加することです。

Package.swift
...
      cxxSettings: [
        .unsafeFlags(["-fno-objc-arc"])
      ]
...

ですが、XCode(13.2.1)上ではautoreleaseなどを書くとエラーになります。プロジェクトトップに、次のファイルを置きます(CLANG_ENABLE_OBJC_ARC = NOだけでもとりあえず動く)。

Package.xcconfig
SUPPORTED_PLATFORMS = macosx;
MACOSX_DEPLOYMENT_TARGET = 12.1;
VALID_ARCHS[sdk=macosx*] = arm64;
CLANG_ENABLE_OBJC_ARC = NO

次のコマンドを実行します。

$ swift package --xcconfig-overrides Package.xcconfig

次のような警告文が出ますが、<package_name>.xcodeprojが生成されます。

warning: Xcode can open and build Swift Packages directly. 'generate-xcodeproj' is no longer needed and will be deprecated soon.

open <package_name>.xcodeprojするとARC無効化がXcode上でも反映されます。

Discussion