我正在尝试在 Android Studio 中创建一个支持 C++ 的简单测试应用程序。我还需要将一些额外的链接器标志传递给 native 构建。在较旧的 Android.mk 构建格式中,这相当简单且有记录。但是,Android Studio 现在默认使用 cmake 作为 native 库,并且不清楚如何指定要传递给 NDK 的额外链接器标志。
我尝试添加的特定标志是 -fsanitize=address
以启用 ASAN。我已经能够通过将此标志添加到 CMake 中的 cppFlags 属性来将其传递给编译器,如下所示。
是否有类似的方法在 gradle 文件中传递链接器标志?
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions -fsanitize=address"
}
}
最佳答案
你可以enable cmake 的详细输出用于检查实际使用的链接器标志,但通常所有 cppFlags 都会“按原样”传递到链接阶段。
对我来说,生成 *.so
文件的命令具有 -fsanitize=address
。
为 externalNativeBuild 传递链接器特定参数的标准方法是使用 -Wl,
和 cFlags
或 cppFlags
,例如
externalNativeBuild {
cmake {
cFlags "-Wl,--fix-cortex-a8"
}
}
关于c++ - 如何通过 Gradle 将链接器标志传递给 Android Studio 中的 cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085046/