在我的项目中,我在处理多个目标时使用不同的标志来运行不同的代码。就像是
#ifdef MY_FLAG
//do this
#else
//do this other
#endif
现在我正在将一些代码带到外部库中,但我不想为每个标志编译不同版本的库,所以问题是:
有没有办法传递类似参数的东西,告诉库(或框架)从外部哪些代码应该以“全局”方式运行?
在我的项目中,我在处理多个目标时使用不同的标志来运行不同的代码。就像是
#ifdef MY_FLAG
//do this
#else
//do this other
#endif
现在我正在将一些代码带到外部库中,但我不想为每个标志编译不同版本的库,所以问题是:
有没有办法传递类似参数的东西,告诉库(或框架)从外部哪些代码应该以“全局”方式运行?
一种选择是让框架提供框架用户可以调用的某种初始化方法或函数。这将告诉框架它应该在什么“模式”下运行。框架的客户端可以在应用程序启动时调用它。
您正在做的#ifdef
是确定编译器可以看到哪些代码。因此,您将不得不为每个标志编译不同的版本,因为库已链接但已经编译。我想问题更多的是你如何处理磁盘上的那些。
您可以将多个 CPU 架构存储到一个静态库中。因此,任何仅与您的目标是 ARMv7、ARMv7s 还是 i386 有关的标志都可以使用单个库来处理。
对于其他人,您可能必须生成不同的库。但是,这只是磁盘占用空间的形状问题——您可以使用您链接到库的任何项目的项目设置,以便根据构建配置链接到不同版本的库。