2012-08-06 22 views
21

私は、XCode 4.4の下でいくつかのリンカー警告をスローするライブラリを持っています。警告は "ld:warning:instance method 'methodName:'のクラスのオーバーライドメソッドからのクラスの警告にあります。インスタンスメソッドのオーバーライドを無効にするリンカー警告フレームワークxcode

フレームワークはまだ問題なく動作しています。次のリリースですが、当面はこれらの警告は非常に面倒です。すべてのリンカーの警告を無効にすることなくオフにする方法はありますか?

+0

警告は何を意味しますか? – trojanfoe

+0

私は、図書館を作った人々が不適切にサブクラス化したことを意味すると思います。何かを壊すようには見えないが、リンカは閉鎖されたソースなので、私はそれを修正することができないので、厄介なそれについて少しwhinnyです。 – ima747

+0

他のクラスの別のメソッドと同じように、クラスにメソッドを作成/名前付けしましたか? – Hexark

答えて

13

私はXcの中で、「その他のリンカフラグ」にフラグを追加することで出ている2つのオプションがあります。 ODEのビルド設定エリア:

1)全てリンカー警告、どんなにを抑制する-Xlinker -wを加算型(これはLDに-wフラグである(1))。明らかに、それはこの特定の警告を静かにしますが、他のすべての警告も同様に警告します。

2)-Xlinker -no_objc_category_mergingを追加すると、リンク時にリンク時にリンカがすべてのカテゴリメソッドをベースクラスに結合する最適化ステップをスキップします。おそらく起動時には少し遅くなりますが、実行時にメソッドスウィージングよりも速いでしょうし、このステップでld(1)が警告を出すので、それもスキップします。

ldには、コンパイラのような個々の警告を外科的に抑止する方法はありませんが、いくつかのフラグやそれらのグループのための特殊フラグはありません。上記のいずれのソリューションも、おそらく生産コードには推奨されませんが、場合によっては、どちらか一方が役立つかもしれません。

+0

ありがとうございます。あなたは私の日を救った – larva

1

その警告を非表示にするオプションは、それが下になる存在する場合:

プロジェクトナビゲータ(左のファイルリスト) - > [プロジェクト名](青いアイコンで1) - >ビルドの設定 - >アップルLLVMコンパイラ3.1 - また警告

In Xcode, how to suppress all warnings in specific source files?

+2

ありがとうございます。コンパイラのセクションには、ライブラリや特定の警告に固有の警告は表示されません。すべての警告を消すことができますが、それは私が避けようとしていることです。参照されるもう1つの記事は、コンパイルされるファイルのものですが、ライブラリとヘッダーはそこに表示されないので、特にフラグを設定する方法はありません。 xcodeで警告を無効にする方法はないと仮定する必要があります。 – ima747

+0

これは悪いアドバイスです。私はビルド設定のUIにチェックボックスを持たない多くのclang警告があると信じています。一般的にファイルの '-W'オプションは、コンパイル時にこの問題を修正します。ファイルに '-fdiagnostics-show-option'オプションを設定すると、使用する' -W'を教えてくれるでしょう。この特定のケースでは、これは動作しません.OPの質問は**リンカ**であり、コンパイラではないからです。 – paulmelnikow

+0

もう1つの解決策は、コンパイラでありリンカーではなく、診断プラグマです(http://clang.llvm.org/docs/UsersManual)。html#controlling-diagnostics-via-pragmas – paulmelnikow

関連する問題