c++ - 如何通过 Gradle 将链接器标志传递给 Android Studio 中的 cmake

标签 c++ android-studio cmake android-ndk linker

我正在尝试在 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,cFlagscppFlags,例如

externalNativeBuild {
   cmake {
      cFlags "-Wl,--fix-cortex-a8"
   }
}

关于c++ - 如何通过 Gradle 将链接器标志传递给 Android Studio 中的 cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085046/

相关文章:

c++ - 逻辑比较 == 运算符重载

c++ - 通过套接字正确发送 HTTP 响应

java - 如何在 Gradle Android 插件中启用 processfork 进行单元测试

c - 使用 CMake 查找介子依赖性

c# - C# 应用程序和非托管 C++ 应用程序之间的进程间通信

C++:使用宏比较指针时出现编译器错误

java - 在android布局中显示多个cardview在另一个之上

javascript - 如何在类文件中创建检查 NetworkConnectionStatus 并在 mainactivity 中使用

qt - "1>cl : Command line error D8021: invalid numeric argument '/Wno-已弃用 '"错误

C++ CMake 项目 : Recipe for target 'main_app' failed