如何通过Gradle将链接标志传递到Android Studio中的CMAKE

How to pass linker flags to cmake in Android Studio via Gradle

本文关键字:Android Studio 中的 CMAKE Gradle 何通过 链接 标志      更新时间:2023-10-16

我正在尝试在具有C 支持的Android Studio中创建一个简单的测试应用程序。我还需要将一些额外的链接标志传递给本机构建。在较旧的android.mk构建格式中,这相当简单且有记录。但是,Android Studio现在默认用于将CMAKE用于本机库,并且尚不清楚如何指定要传递给NDK的额外链接标志。

我要添加的特定标志是-fsanitize=address,以启用Asan。如下所示,我能够将此标志传递给编译器中的CPPFLAGS属性。是否有类似的方法可以通过gradle文件中的链接标志?

externalNativeBuild {
   cmake {
      cppFlags "-std=c++11 -frtti -fexceptions -fsanitize=address"
   }
}

您可以启用cmake的详细输出来检查使用了哪些实际链接标志,但是通常所有 cppflags 被传递给链接阶段。

对我来说,生产*.so文件的命令具有此-fsanitize=address

通过 -Wl,和 CC_4或 cppFlags,通过的特定于链接器参数的标准方法,例如。

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

我认为您不需要设置任何LD标志以供ASAN在应用程序/本机代码中工作。只需运行ASAN_DEVICE_SETUP(位于SDK/NDK工具链中),它将将所需的Asan Lib推向设备。请参阅"运行" @部分https://github.com/google/sanitizers/wiki/addresssanitizeronandroid