静态库需要引用项目配置文件

时间:2012-02-28 09:39:43

标签: ios static-libraries

我正在创建一个静态库,它引用外部头文件configuration.h中的一些#define配置参数。

我编译了静态库并将其安装到另一个包含configuration.h文件的项目中。但是,更改该文件中的参数无效。似乎configuration.h正在编译到静态库中,从而使参数硬编码。

如何获取静态库以引用外部文件?

1 个答案:

答案 0 :(得分:1)

包含#define预处理程序指令的头文件只能影响代码的编译。由于静态库已经编译,因此它不受预处理程序指令的影响。

您应该使用运行时构造,例如if来更改静态库的行为方式。

如果你的代码是:

// configuration.h
#define USE_FLUX_CONDENSER 1

// static library
void advanceTime() {
    #if USE_FLUX_CONDENSER
        chargeFluxCondenser()
    #endif
}

它将成为:

// configuration.h
extern BOOL g_useFluxCondenser;

// static library
BOOL g_useFluxCondenser;
void advanceTime() {
    if (g_useFluxCondenser) {
        chargeFluxCondenser()
    }
}

在初始化代码中的某处,您设置了g_useFluxCondenser = YES