2016-07-14 9 views
0

私はSwiftで書かれたコマンドラインツールを持っている。私はLumberjackを他の関連するアプリで使用していますので、このアプリで動作させたいと思います。コマンドラインツールはAppKitをインポートしません。 DDTTYLogger.hファイルによると、DD_CLIが定義されていれば、カスタム色が定義されます。 (CLIColor.h/m)は、AppKit/NSColor.hではなく、インポートされているので、エラーが表示されるべきではないようです。SwiftコマンドラインツールでCocoaLumberjackを使用するとランタイムエラーが発生する:dyld:ライブラリがロードされていない:@ rpath/libswiftAppKit.dylib

これまで、Swift Compiler、Other Swift Flagsに-DDD_CLIを追加しようとしました。私もビルドにCLIColor.mを追加しようとしました。私は迷っています...誰もがこれについての経験を持っているか、私が試すことができる他のものがありますか?

フィードバックに感謝いたします。

答えて

1

OS X 10.11.6で実行されているXcode 8ベータ版を使用してこの問題に遭遇しましたが、具体的にはさまざまな問題がありましたが、これをデバッグする方法はすべてと同じです。

otoolコマンドを使用して、正確にを参照することができます。ここで、リンカーは、ライブラリファイルとその名前を検索するように指示されています。

私にとって、otool -l {executable_path}は、10.12(Sierra)で導入された/System/Library/PrivateFrameworks/swiftのファイルを探していることを示しました。私は10.11.6を実行しているので、これはショーストッパーです。含まれるようにライブラリの名前が表示さ

  1. LC_LOAD_DYLIBコマンド:(とXcode 8ベータ版の既知のバグ)

    otool出力を見ると、参照するには、2つのものがあります。
    loadコマンドはファイルへの絶対パスを表示するか、接頭辞として@rpath/を付けることができます。これはファイルを見つけるためのショートカットです。

  2. LC_RPATHこれは、ライブラリ名の先頭に@rpath/の検索パスを示します。

あなたは(一時的回避策再度コンパイルを取得するなど)ビルド設定でOther Linker Flagsフィールドで-rpath {absolute_path_to_files}を含むことによってLC_RPATHを変更することができます。私にとっては、/Systemではなく、適切なSDKのファイルのライブラリファイルへのrpathを設定することでした。これを行うには、多くの理由から、の危険を伴うがあります。それを元に戻すことを忘れないでください。

ビルド階層に問題がある場合は、軽いアプローチを使用できます。 otoolを使用すると実際に何が起こっているか見ることができるので、Runpath Search Pathsのビルド設定をディレクトリを飛び越すようにインテリジェントに変更したり、リンカの出力にどのように影響するかを知ることができます。

関連する問題