0

私のプロジェクトでは、複数のターゲットを扱うときに、さまざまなフラグを使用してさまざまなコードを実行しています。何かのようなもの

#ifdef MY_FLAG
//do this
#else
//do this other
#endif

今、私はいくつかのコードを外部ライブラリに取り込もうとしていますが、フラグごとに異なるバージョンのライブラリをコンパイルしたくないので、問題は次のとおりです。

どのコードを「グローバル」な方法で実行する必要があるかを外部からライブラリ (またはフレームワーク) に伝える引数のようなものを渡す方法はありますか?

4

2 に答える 2

0

あなたがやっていること#ifdefは、コンパイラがどのコードを見ることができるかを確立することです。したがって、ライブラリはリンクされていますが、既にコンパイルされているため、フラグごとに異なるバージョンをコンパイルする必要があります。問題は、ディスク上のものをどうするかということだと思います。

複数の CPU アーキテクチャを 1 つの静的ライブラリに格納できます。したがって、ARMv7、ARMv7、または i386 のいずれを対象としているかに関係するフラグはすべて、1 つのライブラリで処理できます。

他のものについては、おそらく別のライブラリを作成する必要があります。ただし、これはディスク フットプリントの形状の問題です。ライブラリに対してリンクする任意のプロジェクトのプロジェクト設定を使用して、ビルド構成に応じて異なるバージョンのライブラリにリンクすることができます。

于 2012-10-10T01:19:26.327 に答える
0

1 つのオプションは、フレームワークのユーザーが呼び出すことができるある種の初期化メソッドまたは関数をフレームワークに提供させることです。これにより、フレームワークに、実行する必要がある「モード」が通知されます。フレームワークのクライアントは、アプリの起動時にこれを呼び出すことができます。

于 2012-10-10T01:35:49.273 に答える