将应用预处理器信息转发到静态库

时间:2014-02-06 13:08:04

标签: c xcode c-preprocessor

我正在测试应用程序中的XCode中开发一个静态库。通过将库项目拖到测试应用程序项目中,然后将库添加到测试应用程序项目构建阶段,我可以同时处理测试应用程序和库。 。

enter image description here

有没有办法将预处理程序标志从测试应用程序转发到库?例如,我尝试将标志MY_DEBUG_FLAG添加到测试应用程序项目,然后在我添加的静态lib标头中。 。 。

#if defined(MY_DEBUG_FLAG)
#define MY_DEBUG_FLAG_USED
#endif

...但是,库中的#ifdef MY_DEBUG_FLAG_USED块将被忽略。我总是可以将标志添加到库和应用程序项目中,但这是一个令人讨厌的重复,我想尽可能避免。我希望我的目标很清楚,如果有人有任何建议,我会对一个完全不同的习语持开放态度。

1 个答案:

答案 0 :(得分:1)

由于定义的预处理是在编译之前执行的,因此无法将预处理程序标志传递给已编译的库。

您可以做的是将一组变量添加到库中,它可以在运行时检查它们,并将它们设置为应用程序中的相关值,或者让库提供启用或禁用它的不同方面的功能。 / p>