如何用GNUstep使用Obj-C 2.0?

我意识到libobjc2的存在,并且我得知我需要使用clang而不是GCC,但是我找不到有关编译过程有什么不同的基本说明。

任何人都可以提供有关Ubuntu使用Objective-C 2.0获取,configuration,编译和使用GNUstep 的详细步骤说明吗?

由于GNUStep ObjC2 FAQ已经被引用,我假设你已经看过了。 不过,我想指出一点,

对于更高级的功能,目前只有在使用Clang进行编译时才支持,您将需要GNUstep运行时。 目前这还不是生产准备。 它应该作为GCC运行时的替代品,但是其中一些高级功能没有得到很好的测试。

常见问题解答还提出以下内容:

如果您使用的是最新版本的GCC来编译代码,那么您应该有一个与您的编译器一起提供的Objective-C运行时库的副本。

如果你用-fobjc-nonfragile-abi标志编译,那么你将使用新的ABI。 这只有GNUstep运行时才支持。 这增加了:

  • 物业反思
  • 对可选协议方法的反思
  • 非脆弱的实例变量
  • 转发代理支持

所以,如果你正在通过GCC寻找更老的功能, 本教程将很好地完成这项工作,就像这一个。 您已经明确地表示要使用由Clang提供的功能(通过libobjc2 )来实现此功能,该功能拥有自己的文档。

获得Clang的释放和建立似乎相当切割和干燥。 LLVM入门文档非常强大(完整的文档存档在这里 ),这应该提供深入了解后端设置和正确编译。 可以在这里找到对预期构建过程的一些额外的了解。

然而,编写Clang中的Objective-C应用程序似乎在撰写本文时还是没有经过检验。 随着功能变得可用并且代码库稳定下来,我想更多的用户文档将会上线。

根据GNUstep Wiki ,你只需要用-fblocks-fobjc-nonfragile-abi -fblocks编译你的代码。 然后,您只需在代码中使用语言功能。