为什么我不能用MacPorts gcc-mp-4.6编译Objective-C / C ++(。mm)文件?

时间:2013-04-16 23:22:57

标签: objective-c gcc osx-lion macports

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

忘记IDE或构建工具:我从编译器的命令行调用得到相同的结果。也就是说,我记录了一个命令行,该命令行用于使用Apple gcc编译.mm文件,验证是否它可以从命令行工作,然后运行相同的命令,但没有改变,但编译器使用它并不起作用。我错过了什么?

1 个答案:

答案 0 :(得分:1)

看起来我可能遇到的具体问题可能是Apple特定的语言扩展,因为我得到的具体错误与a blog post的引用相同:

  

添加之后,我好了大约30秒,直到我到达   我的项目的一部分,其中有一些COCOA Objective-C UI的东西   编译。

     

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:75:24:   错误:在'^'标记之前预期的unqualified-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编译。