Objective c 创建Xcode项目的自定义版本

Objective c 创建Xcode项目的自定义版本,objective-c,xcode,command-line,build-process,compilation,Objective C,Xcode,Command Line,Build Process,Compilation,我将用Xcode构建一个用Obj-C编写的Mac应用程序。为了便于讨论,假设它有10个可选特性。我需要一种方法来启用或禁用这些功能,以创建应用程序的自定义版本。这些构建将是自动化的(最有可能通过Mac OS X终端),因此我需要一种方法来说明在构建时启用/禁用了哪些功能(配置文件或CLI参数将是理想的) 那么,实现这一目标的最佳方式是什么?在开始编码之前,我正试图计划好这一点,以便在我的代码库中有适当的分离,允许这些特性来来去去。理想情况下,自定义构建只包含其应具有的功能的编译代码。换句话说,我

我将用Xcode构建一个用Obj-C编写的Mac应用程序。为了便于讨论,假设它有10个可选特性。我需要一种方法来启用或禁用这些功能,以创建应用程序的自定义版本。这些构建将是自动化的(最有可能通过Mac OS X终端),因此我需要一种方法来说明在构建时启用/禁用了哪些功能(配置文件或CLI参数将是理想的)


那么,实现这一目标的最佳方式是什么?在开始编码之前,我正试图计划好这一点,以便在我的代码库中有适当的分离,允许这些特性来来去去。理想情况下,自定义构建只包含其应具有的功能的编译代码。换句话说,我不想总是编译所有的特性并在运行时对它们进行调整。

您可以为此使用Xcode配置;例如,对于每个配置,可以包含不同的前缀头。然后可以通过
xcodebuild
从命令行触发构建

如果您更喜欢配置文件方法,可以使用.xcconfig文件来定义任何Xcode构建设置

Xcode构建系统指导这两种方法。

使用#ifdef和编译器标志下的-D标志来控制内容是编译入还是编译出。如果需要,您可以通过这种方式设置许多不同的配置,并且只需让xcode构建配置很好地工作即可

#include <stdio.h>

int
main (void)
{
#ifdef TEST
  printf ("Test mode\n");
#endif
  printf ("Running...\n");
  return 0;
}
产出2:

$ gcc -Wall dtest.c
$ ./a.out
Running...

来源:

我不认为手动为每个组合创建一个配置是非常合理的:我不想创建1024个配置:-),但我将研究.xcconfig文件的想法。谢谢@macinjosh你找到办法了吗?
$ gcc -Wall dtest.c
$ ./a.out
Running...