4

すべて同じ静的ライブラリ プロジェクトにリンクする複数のアプリ プロジェクトがあります。各アプリ プロジェクトは、異なる設定を使用して静的ライブラリ プロジェクトをコンパイルする必要があります。

現時点では、スタティック ライブラリ プロジェクトに条件付きコンパイル ヘッダーがあります。これを ViewType.h と呼び、各ビューに固有の型、typedef、マクロなどを追加します。

#define VIEW_A 1
#define VIEW_B 2
#define VIEW_C 3

#ifndef VIEWTYPE
#define VIEWTYPE VIEW_A
#endif

#if VIEWTYPE == VIEW_A
    // further typedefs and defines tailored to VIEW_A
#elif VIEWTYPE == VIEW_B
    // further typedefs and defines tailored to VIEW_B
#elif VIEWTYPE == VIEW_C
    // further typedefs and defines tailored to VIEW_C
#endif

ここでの問題は、各アプリ プロジェクトで静的ライブラリ プロジェクトの VIEWTYPE を変更する必要があり、アプリ プロジェクトを切り替えるたびに VIEWTYPE を再度変更する必要があることです。

残念ながら、アプリ ターゲットで VIEWTYPE=2 (たとえば) をプリプロセッサ マクロとして定義できないようです。また、3 つのプロジェクトすべてに同じ静的ライブラリ プロジェクトが含まれているため、静的ライブラリ プロジェクトでこれを定義することもできません。 m ワークスペースを使用していない)。

1 つの問題は、静的ライブラリが依存ターゲットであり、アプリ ターゲットが考慮される前に最初にビルドされることです。そのため、おそらく、他の条件に基づいてライブラリがどのアプリ用に構築されているかを決定する方法があります (つまり、ファイルをチェックするか、オプションのアプリ固有のヘッダーを含めます)。

質問:アプリ ターゲットで定義されたマクロ/設定に基づいて、マクロを作成するか、条件付きコンパイルを実行する方法を教えてください。これらは、静的ライブラリ プロジェクトによって順守されます。

4

1 に答える 1