2017-12-12 12 views
5

swift package generate-xcodeprojのmacOSターゲットを設定する方法はありますか?Xcodeプロジェクトを生成しますか?`swift package generate-xcodeproj`のmacOSターゲットを設定しますか?

たとえば、デフォルトのターゲットを「x86_64-apple-macosx10.12」に設定します。

背景

現在、Xcodeの9.2スウィフトツールチェーンは、コマンドライン上の次のバージョンを示しています。

swift --version 
# Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2) 
# Target: x86_64-apple-macosx10.9 
swift package --version 
# Apple Swift Package Manager - Swift 4.0.0-dev (swiftpm-13752) 

swift package generate-xcodeproj結果は、10.10のMacOSの標的とXcodeプロジェクトです。

注:生成されたXcode 10.10ターゲットは、swiftコマンドラインコンパイラターゲットの10.9より1つ上のバージョンです。したがって、明らかに、swiftswift package generate-xcodeprojのデフォルトmacOSターゲットは、互いに独立して決定されます。

これまでのところ、Package.swift,--xcconfig-overrides、または何か他の解決策は、分かりにくいものでした。

+0

。これを実行するより良い方法にも同じように適用されます:https://oleb.net/blog/2017/04/swift-3-1-package-manager-deployment-target/ – Klaas

+0

@Klaas FYIと同様に、 'swift package generate-xcodeproj'と' ... -Xswiftc "-target" -Xswiftc "x86_64 ...' [ここ](https://stackoverflow.com/questions/47783502/set-macos-target-for-swift-package- generate-xcodeproj/48158608#48158608) –

答えて

1

公式のツールでXcodeプロジェクトの操作が許可されていない場合は、生成されたXcodeプロジェクトを更新するスクリプトを作成することをお勧めします。

xcodeproj rubygemを使用できます。 an example scriptを参照してください。

私は単純にする回避策としてswiftxcodeswiftbuild、およびswifttest bashのエイリアスを作成することになった関連する質問にSwift Package Manager and Xcode: Retaining Xcode Settings?

3

を参照してください:

swift package generate-xcodeprojとMacOSの目標を設定
  1. 、および
  2. swift build -Xswiftc "-target" -Xswiftc "x86_64-…"を隠します

セットアップ

編集とsource~/.bash_profileは、コマンドラインにswiftxcodeswiftbuild、およびswifttestエイリアスを追加します。

################################### 
### Swift Package Manager (SPM) ### 
################################### 
alias swiftxcode="swift package generate-xcodeproj --xcconfig-overrides Package.xcconfig" 
alias swiftbuild='swift build -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"' 
alias swifttest='swift test -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"' 

スウィフトパッケージマネージャツールのバージョン4を使用して指定するためのプロジェクトのための[編集Package.swift

/// Package.xcconfig 

/// macOS Deployment Target 
/// 
/// Code will load on this and later versions of macOS. 
/// Framework APIs that are unavailable in earlier versions will be weak-linked; 
/// your code should check for `null` function pointers 
/// or specific system versions before calling newer APIs. 

MACOSX_DEPLOYMENT_TARGET=10.12 

注:

// swift-tools-version:4.0 
import PackageDescription 

let package = Package(… 

フォルダを投影するPackage.xcconfigを追加作成しBuildSettingExtractor (xcodeproj → xcconfig)James Dempseyは、Package.xcconfig fに追加するその他の設定を調べるのに役立ちますile。

使用

cd to/some_project_folder/ 
swiftxcode  # create Xcode project 
swiftbuild  # build from command line 
swifttest  # build and run tests from command line 

警告

  1. Package.xcconfigセットが設定を構築するには、唯一のXcodeプロジェクトにおける目標レベルで値。全体のプロジェクトレベルビルド設定値は変更されません。
  2. Package.xcconfigすべてのターゲットに対してが同じ値に設定されています。現時点では、xcconfigのメカニズムがターゲットごとには存在しません。
  3. SKIP_INSTALLなどの一部のxcconfig値は、Xcodeプロジェクトで手動で設定する必要があります。ロードマップ

がうまくいけば、上に示した電流制限はxcconfigアプローチはカスタム指定Swift 4 Package Manager Roadmapで説明したように、マニフェストパッケージの設定を構築する能力に取って代わられるであろう。

構成ファイルのサポート

我々は、特定のパッケージマネージャの動作をカスタマイズできるように、ユーザー固有またはパッケージ固有の可能性があり、構成ファイルのメカニズムを、追加することを検討しています。このための1つの即時の使用は、パッケージのオーバーライドコンパイラフラグを渡すための一時的なメカニズムですが、実際のビルド設定モデルでその必要性を解決したいと考えています。構成ファイルの他の用途は検討の対象となります。また

注目に値するアップル社の「新ビルドシステム(プレビュー)」、スウィフトに書かれたとXcode 9でリリースは、ビルド設定を定義するためにxcconfigファイルを使用することができるということです。

資源だけでなく、このためのソリューションを探している

関連する問題