web-dev-qa-db-ja.com

静的ライブラリとSwift

だから私はSwiftでiOSプロジェクトに取り組んでおり、いくつかの便利なものを含む静的ライブラリを作成したかったのです。

私の問題は、Xcode(バージョン6.3)でlibをビルドしようとすると、「ビルドに失敗しました」に続いて/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker

私はこれを見たことがなく、それは私の最初の静的ライブラリではありません。だから私は排他的にSwift=クラスを使用しているという事実にリンクされるかもしれないと考えていました。

皆さんはどう思いますか ?前もって感謝します。

23
Que20

Xcode 9ベータ4の時点で、XcodeはSwiftソースで静的ライブラリをネイティブにサポートしています。

10
Alessandro

前述のとおり、Appledoesallow Swiftベータ4。

Objective-Cベースのターゲットと「子」静的ライブラリプロジェクトを持つ既存のプロジェクトでこれを実行しようとし、リンクエラーが発生し続けました

ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64

また

ld: library not found for -lswiftDispatch for architecture x86_64

これは、メインターゲット(アプリ)がObjective-Cに対してのみビルドを試みており、Swiftライブラリを含める必要があることを静的ライブラリから通知されていないためです。 t any Swift内のファイルCompile SourcesセクションのBuild Phasesアプリのターゲット。

したがって、基本的にあなたがしなければならないのは、少なくとも1つの.Swiftファイルをコンパイルリストに追加すると、Swiftライブラリが含まれます。コードや値は必要ありません。空のファイルでもかまいません。

次に、Swiftファイルを「子」静的ライブラリプロジェクトに追加し始めます。最初にブリッジヘッダーを生成させてから、移動して、インポートするものを変更します(makeプロジェクトがビルド設定で正しいファイルを指していることを確認してください(移動した場合)。

same静的ライブラリ内でSwiftとObjective-Cを使用すると、独自の問題が発生する可能性があります。 を読むことをお勧めします。 Apple開発者ドキュメント「同じプロジェクト内のSwiftとObjective-C」 Objective-CをSwift(を使用してブリッジングヘッダー)と、Objective-CコードでSwiftファイルを使用する方法(生成された-Swift.hライブラリ用)。

19
Dean Kelly

Swiftは 静的ライブラリをサポート ではありません

正しい方法はフレームワークを作成することですが、回避策 here があります。

18
Giordano Scalzo

Swiftコンシューマー-> Swift static library

Xcodeバージョン10.2.1

Swift静的ライブラリを作成

ライブラリプロジェクトを作成するか、ライブラリターゲットを作成します

File -> New -> Project... -> Cocoa Touch Static Library
//or
Project editor -> Add a Target -> Cocoa Touch Static Library 

ファイルを追加.Swift

Select `.Swift` file -> Select File Inspectors Tab -> Target Membership -> Select the target
//or
Project editor -> select a target -> Build Phases -> Compile Sources -> add files

ビルドライブラリ- ⌘ Command + B またはProduct -> Build

注:クライアントコードと同じプロセスアーキテクチャのライブラリをビルドしてください。

生成された出力を検索 [ビルド場所]

Products group -> lib<product_name>.a -> Show in Finder

ディレクトリに含まれるもの

  • lib<product_name>.a –構築された静的ライブラリ
  • <product_name>.swiftmoduleフォルダーには以下が含まれます。
    • .swiftdoc-ドキュメント
    • .swiftmodule-パブリックインターフェイス/定義

Swift静的ライブラリを使用

Drag and drop Xcodeプロジェクトへのバイナリ [約]

Link Binary[未定義のシンボル][リンクと埋め込み]

Project editor -> select a target -> General -> Linked Frameworks and Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file

Library Search paths[ライブラリが見つかりません][再帰パス]

Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<target_name>.a` file

Import Paths[このようなモジュールはありません][再帰パス]

Project editor -> select a target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths -> add path to the parent of `.swiftmodule` folder

モジュールをSwiftクライアントコード [モジュール名]

import module_name

その他の例はこちら

6
yoAlex5