NDK:编译扩展名为.mm的c ++文件

时间:2013-02-19 10:44:51

标签: android c++ ios android-ndk g++

我在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文件,但是可以接受其他想法,例如:

  1. copy&为Android项目重命名.mm到.cpp - 我不喜欢这个,因为它使构建和版本控制变得复杂,但它似乎是最基本的东西可以工作。
  2. 将其构建为静态库(使用xcode) - 我尝试去那里,但我不确定要构建哪种架构,或者它是否有意义。
  3. 其他?
  4. 有没有人对此有一些经验或想法?感谢。

    解决方案(见接受的答案)
    LOCAL_CFLAGS + = -x c ++

2 个答案:

答案 0 :(得分:1)

在.mk文件中将"-x c++" option添加到$ CFLAGS变量。这应该强制GCC使用C ++编译器。

编辑:抱歉打字错误,“-x”选项,而不是“-c”和“c ++”,而不是“cpp”

答案 1 :(得分:1)

尽管已经接受了答案,我仍然会说将文件重命名为.CPP是正确的做法。关于使扩展与内容匹配的争议是什么? Xcode可以很好地编译C ++文件,作为奖励,它可以保护你免受iOS上使用Objective C ++的意外污染。