我在XCode项目中有一些C ++源文件(扩展名为.mm)。 我正在尝试只编译那些纯C ++(没有使用objc语法或cocoa运行时)并在Android NDK构建(NDK r8d)中编译它们。 问题似乎是g ++甚至不会将.mm文件视为C ++,并且会失败:
arm-linux-androideabi-g++: error: Objective-C++ compiler not installed on this system
我试过了:
1. LOCAL_CPP_EXTENSION:=。mm(在Android.mk中) - 没有用。
2.搜索有关如何接受自定义文件扩展名的g ++文档 - 找不到任何文件扩展名。
我真的很想找到一种方法来强制NDK / g ++接受.mm文件,但是可以接受其他想法,例如:
有没有人对此有一些经验或想法?感谢。
解决方案(见接受的答案)
LOCAL_CFLAGS + = -x c ++
答案 0 :(得分:1)
在.mk文件中将"-x c++" option添加到$ CFLAGS变量。这应该强制GCC使用C ++编译器。
编辑:抱歉打字错误,“-x”选项,而不是“-c”和“c ++”,而不是“cpp”答案 1 :(得分:1)
尽管已经接受了答案,我仍然会说将文件重命名为.CPP是正确的做法。关于使扩展与内容匹配的争议是什么? Xcode可以很好地编译C ++文件,作为奖励,它可以保护你免受iOS上使用Objective C ++的意外污染。