0

Swift で記述されたコマンド ライン ツールがあります。他の関連アプリでLumberjackを使っているので、こちらでも動かしてみたいと思います。コマンド ライン ツールは AppKit をインポートしません。DDTTYLogger.h ファイルによると、DD_CLI が定義されている場合、カスタム カラー定義。(CLIColor.h/m) は AppKit/NSColor.h ではなくインポートされているため、エラーが発生することはないようです。

これまでのところ、Swift Compiler、Other Swift Flags に –DDD_CLI を追加してみました。CLIColor.m もビルドに追加してみました。私は途方に暮れています...誰でもこれを経験したことがありますか、それとも他に試すことができることがありますか?

フィードバックをお待ちしております。

4

1 に答える 1

2

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

このotoolコマンドを使用すると、リンカがライブラリ ファイルを検索するように指示された場所とその名前を正確に確認できます。

私にとっては、10.12 (Sierra) で導入されたotool -l {executable_path}ファイルを探していることがわかりました。/System/Library/PrivateFrameworks/swift私は10.11.6を実行しているので、これはショーストッパーです. (および Xcode 8 ベータ版の既知のバグ)

出力を見ると、次のotool2 つのことがわかります。

  1. LC_LOAD_DYLIB含めるライブラリの名前を表示するコマンド。
    load コマンドは、ファイルへの絶対パスを表示するか、ファイルの@rpath/検索に使用されるショートカットをプレフィックスとして付けることができます。
  2. LC_RPATHで始まるライブラリ名の検索パスを示します@rpath/

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

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

于 2016-08-01T04:01:33.120 に答える