だから私はSwiftでiOSプロジェクトに取り組んでおり、いくつかの便利なものを含む静的ライブラリを作成したかったのです。
私の問題は、Xcode(バージョン6.3)でlibをビルドしようとすると、「ビルドに失敗しました」に続いて/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker
私はこれを見たことがなく、それは私の最初の静的ライブラリではありません。だから私は排他的にSwift=クラスを使用しているという事実にリンクされるかもしれないと考えていました。
皆さんはどう思いますか ?前もって感謝します。
Xcode 9ベータ4の時点で、XcodeはSwiftソースで静的ライブラリをネイティブにサポートしています。
前述のとおり、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
ライブラリ用)。
Swiftは 静的ライブラリをサポート ではありません
正しい方法はフレームワークを作成することですが、回避策 here があります。
Xcodeバージョン10.2.1
ライブラリプロジェクトを作成するか、ライブラリターゲットを作成します
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
-パブリックインターフェイス/定義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