我有一个C ++ 11代码库,可以使用OS X Lion的MacPorts上的gcc 4.6进行编译。 我还需要编译并链接一些特定于OS的Objective C / C ++文件以制成最终的可执行文件。 我想使用相同的编译器版本来编译整个项目,但是我无法获得gcc的MacPorts 4.6版来识别Objective-C文件。 它总是尝试将它们解释为C ++代码,而忽略.mm文件扩展名。 (编译这些文件确实适用于gcc的Xcode版本,但不适用于MacPorts版本。但是gcc是4.2版,我想使用gcc 4.6或更高版本进行编译。)

忘记IDE或构建工具:从编译器的命令行调用中获得相同的结果。 也就是说,我记录了一个命令行,该命令行可用于使用Apple gcc编译.mm文件,并从命令行确认是可以运行的,然后运行相同的命令,但未进行任何更改,但使用的编译器不起作用。 我想念什么?

===============>>#1 票数:1

看来我遇到的特定问题可能是由于Apple特定的语言扩展引起的,因为我得到的特定错误与博客文章中的引用相同:

添加完之后,我花了大约30秒钟的时间,直到进入项目的一部分,那里正在编译一些COCOA Objective-C UI东西。

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:75:24:错误:'^'令牌之前的预期不合格ID /Developer/SDKs/MacOSX10.7 .sdk / System / Library / Frameworks / Foundation.framework / Headers / NSTask.h:75:24:错误:在'^'令牌之前应有预期的')'

哦哦 我知道这是什么 这是Apple的“阻止”语言扩展。 似乎在许多系统头文件中都使用了块。 我认为使用MacPorts gcc不会有解决此问题的方法。 FSF gcc只是不了解块。 对我来说幸运的是,我在Objective C / C ++代码中没有需要使用gcc 4.6进行编译的任何内容,因此我只是使用clang编译了此目标。

  ask by Dennis translate from so

未解决问题?本站智能推荐:

关注微信公众号