我将使用Xcode构建一个用Obj-C编写的Mac应用程序。为了论证,我们假设它将有10个可选功能。我需要一种方法来启用或禁用这些功能来创建应用程序的自定义构建。这些构建将是自动化的(很可能通过Mac OS X终端),因此我需要一种方法来说明在构建时启用/禁用这些功能中的哪一个(配置文件或CLI参数将是理想的。)
那么实现这一目标的最佳方法是什么?我正在尝试在开始编码之前计划好这一点,以便在我的代码库中有适当的分离,以允许这些功能来来去去。理想情况下,自定义构建仅包含其应具有的功能的已编译代码。换句话说,我不想总是编译所有功能并在运行时将它们排除在外。
答案 0 :(得分:3)
您可以将Xcode配置用于此目的;例如,对于每个配置,您可以包含不同的前缀标头。然后,您可以通过xcodebuild
从命令行触发构建。
如果您更喜欢配置文件方法,则可以使用.xcconfig文件来定义任何Xcode构建设置。
Xcode构建系统指南describes这两种方法。
答案 1 :(得分:0)
在编译器标志下使用#ifdef和-D标志来控制是否编译了东西。如果需要,您可以通过这种方式设置许多不同的配置,并且只需让xcode构建配置正常工作。
#include <stdio.h>
int
main (void)
{
#ifdef TEST
printf ("Test mode\n");
#endif
printf ("Running...\n");
return 0;
}
输出1:
$ gcc -Wall -DTEST dtest.c
$ ./a.out
Test mode
Running...
输出2:
$ gcc -Wall dtest.c
$ ./a.out
Running...
来源:http://www.network-theory.co.uk/docs/gccintro/gccintro_34.html