5

.aいくつかの制限付きで静的ライブラリ (ファイル) をコードにリンクしたい

  • 条件は、ビルド タイプ (デバッグ、リリース) またはアーキテクチャではなく、環境変数である必要があります。
  • 静的ライブラリが使用されていない (インポートされていない、コードで使用されていない) 場合、最終的なバイナリにはそれへの参照がまったく含まれていません。

コードは次のようになります。

#ifdef CRASH_LOGGING
[Crittercism enableWithAppID:@"abc"]
#endif

また、環境変数には同様の名前が必要です。

で遊んでOTHER_LINKER_FLAGS = -weak_library、ターゲットから を削除し、.aオプションとして設定しましたが、動作しません。ライブラリがリンクされていないか、コンパイル エラーが発生するか、一部が.a最終的な実行可能ファイルに属しています。

どうすればこれを達成できますか?

4

1 に答える 1

0

最後に、xcodebuildコマンドラインにパラメーターを追加することで、この問題を解決しました。

基本的にあなたがする必要があるのは調整することです:

  • ヘッダ.hファイルの場所
  • 図書館の.aある場所
  • ライブラリを使用することをリンカに伝える-lCrittercism_v4_0_7
/usr/bin/xcodebuild -configuration リリース クリーン
"LIBRARY_SEARCH_PATHS=\${LIBRARY_SEARCH_PATHS}\${PROJECT_DIR}/Libraries/CrittercismSDK"
"HEADER_SEARCH_PATHS=\${HEADER_SEARCH_PATHS} \${PROJECT_DIR}/Libraries/CrittercismSDK"
"OTHER_LDFLAGS=-lCrittercism_v4_0_7"

このアプローチでは、ライブラリをターゲットや Xcode に追加する必要はまったくありません。最後の 3 つのパラメーターがコマンド ラインに追加されていない場合、ライブラリは最終的な実行可能ファイルにまったく属しません。

于 2013-10-02T07:39:03.370 に答える