2009-03-10 7 views
24

私はCocoaを使用してXcodeにコマンドラインユーティリティ(Foundationツール)を構築しました。このツールはサードパーティのフレームワークを利用しています。コマンドラインツールでのフレームワークの使用

Xcodeですべて正常に動作しますが、このプログラムをどのように展開すればよいですか?

私がFinderからアプリを実行すると、見ているのでライブラリが見つかりません../Frameworks/etc.サードパーティのフレームワークで静的にリンクできますか?

+0

ここで似たような質問への回答をチェックしてください - > http://stackoverflow.com/a/19230699/986 –

答えて

20

残念ながら、OS Xにコマンドラインユーティリティを使用してフレームワークをバンドルする方法はなく、リンク先のフレームワークがアプリケーションバンドルのFrameworks /ディレクトリにバンドルされていると思われます。フレームワークのソースコードにアクセスできる場合は、静的ライブラリをコンパイルし、アプリケーションに静的にリンクする(またはアプリケーションのターゲットに直接ソースを含める)ことができます。あなたがソースコードを持っていないか、静的に何らかの理由でライブラリをリンクしない場合は、残りの2つのオプションがあります。

  1. あなたは、システム全体の/ライブラリ/フレームワークへのアクセスを持っている場合フォルダには、サードパーティのフレームワークをインストールすることができます。これには、ビルド時にフレームワークのインストールパス(INSTALL_PATHのビルド設定)を/Library/Frameworksに設定するか、install_name_toolを使用してフレームワークのインストールパスを/Library/Frameworks(フレームワークのソースコードがない場合)に変更する必要があります。

  2. コマンドラインユーティリティをアプリケーションバンドルの実行可能ファイル(AppBundle.app/Contents/MacOS/など)でビルドします(GUIアプリケーションを作成する場合と同じように)。サードパーティのフレームワークをアプリケーションバンドルのframeworksディレクトリにコピーすることができます。その後、アプリケーションバンドルを任意の場所に置いて、コマンドラインユーティリティへのシンボリックリンクを作成することができます。

オプション1は確かに受け入れられたアプローチですが、正当な理由があった場合はオプション2を使用しました。

フレームワークのビルド、リンク、およびインストールに関する詳細は、AppleのFrameworks Programming Guideにあります。

+0

#2は私がいつも見たいと思っている非伝統的なアプローチです。私は思っています - INSTALL_NAME_TOOL install nameツールを使用する方法もありますか?どう思いますか? –

+0

誰でも_how_を使って/ Library/Frameworksにフレームワークプロジェクトをインストールすることができますか?私の場合、別のプロジェクトで使用するためにGRDB.swiftをインストールしたいと考えています。 – kjb

+0

スウィフトは現在、フレームワーク内のSwift Standard Libraryにコマンドラインツールをアクセスする必要があります。 kjbの場合、インストーラは/ライブラリ/ Frameworksに追加できるはずです。 – balthisar

8

別の方法として、フレームワークのソースコードがある場合は、スタティックライブラリターゲットを追加してスタティックライブラリを作成します。その後、静的にコマンドラインツールにリンクすることができます。

+0

よろしくお願いします!静的リンクdefo行く方法! – Stoff81

+4

Swiftは静的ライブラリではサポートされていません:( – iksnae

関連する問題