我有多个应用程序项目,它们都链接到同一个静态库项目。每个应用程序项目都需要使用不同的设置编译静态库项目。
目前我在静态库项目中有一个条件编译头文件,我们称之为 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
这里的问题是,每个app项目都需要更改静态库项目中的VIEWTYPE,而每次切换app项目都必须再次更改VIEWTYPE。
不幸的是,我似乎无法将 VIEWTYPE=2 (例如)定义为应用程序目标中的预处理器宏。而且我也无法在静态库项目中定义它,因为所有 3 个项目都包含相同的静态库项目,因为 .xcodeproj 在 3 个应用程序之间共享(即 .xcodeproj 被拖放到应用程序项目中;我m 不使用工作区)。
我知道一个问题是静态库是一个依赖目标,它是在考虑应用程序目标之前首先构建的。因此,也许有一些方法可以根据其他条件(即检查文件或包含可选的应用程序特定标头)来决定为哪个应用程序构建库。
问题:如何根据应用程序目标定义的宏/设置创建宏或以其他方式执行条件编译,然后由静态库项目遵守?