使用 Android Studio Gradle Build、NDK 和 CMake 检查预处理器指令

bph

我正在传递预处理器指令,CMakeLists.txt用于使用 android NDK 构建本机 android 库。

add_definitions(-DMY_DIRECTIVE=1)

仔细检查这些预处理器指令是否确实找到了对编译器的调用(llvm ?)

但是 gradle 构建输出似乎不包括对编译器的调用,我只是得到:

Building C object CMakeFiles/my_project.dir/home/me/projects/my_proj/src/my_native.c.o

有没有办法使 gradle 输出更详细,以便我可以看到实际的编译器调用并检查这些预处理器指令是否存在?

bph

答案是理解Gradle利用CMake构建android项目的android NDK组件(共享库),而CMake利用Ninja作为构建系统来处理对编译器的调用。android NDK 使用的编译器现在默认为 LLVM->Clang。

因此,为了实际查看 Clang 调用,您必须找到build.ninjaandroid 项目的每个目标文件。

就我而言,我只是为armeabi-v7a目标架构而构建。因此,相关build.ninja文件位于:

/home/me/projects/my_proj/app/.externalNativeBuild/cmake/debug/armeabi-v7a
/home/me/projects/my_proj/app/.externalNativeBuild/cmake/release/armeabi-v7a

cd 到任一目录并运行:

ninja -v

即,该-v选项是查看您的 android 项目的本机构建 (android NDK) 部分生成的对 clang 编译器的所有调用的关键。

请注意,如果您通过 android 包管理器安装了 CMake,您可能会发现 ninja 未安装在PATH. 对我来说,忍者二进制文件的位置如下:

~/Android/Sdk/cmake/3.6.3155560/bin/ninja

(与 cmake 二进制文件相同的目录)

因此,为了让我看到所有针对我的 android 项目调试 armeabi-v7a 构建的 clang 编译器调用,我必须运行:

cd /home/me/projects/my_proj/app/.externalNativeBuild/cmake/debug/armeabi-v7a
~/Android/Sdk/cmake/3.6.3155560/bin/ninja -v

注意忍者是否告诉你 ninja: no work to do.

然后运行:

~/Android/Sdk/cmake/3.6.3155560/bin/ninja clean

相关忍者文档是 -> https://ninja-build.org/manual.html#_extra_tools

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Studio NDK:使用ndk-build进行编译,并通过Gradle Experiment获得本机支持

来自分类Dev

对 NDK 中的不同库使用 ndk-build 和 cmake

来自分类Dev

Android Studio,Gradle,OpenCV和NDK

来自分类Dev

使用Android Studio和Gradle Experiment将libxml2构建到NDK中

来自分类Dev

Gradle和Android Studio

来自分类Dev

使用 sed 和 jq 更改 .ino 文件中预处理器指令的值

来自分类Dev

如何使用Android Studio + Gradle + NDK构建外部C ++库?

来自分类Dev

项目使用ndk-build而非Android Studio构建

来自分类Dev

如何使用Android NDK和Gradle构建单个APK

来自分类Dev

无法使用android-ndk和Android Studio构建项目

来自分类Dev

无法使用android-ndk和Android Studio构建项目

来自分类Dev

如何使用(Android Studio和Gradle的)新清单合并?

来自分类常见问题

在Android Studio和Gradle中使用ViewPagerIndicator库

来自分类Dev

如何使用Android Studio和/或Gradle仅构建单个buildType

来自分类Dev

使用Android Studio和Gradle进行单元测试?

来自分类Dev

如何使用Gradle和Android Studio从资源中排除文件?

来自分类Dev

使用Android Studio和Gradle进行单元测试?

来自分类Dev

Android Studio:Gradle构建失败并出现错误:无法加载类“ com.android.build.gradle.ndk.NdkPlugin”

来自分类Dev

Android Studio:Gradle构建失败并出现错误:无法加载类“ com.android.build.gradle.ndk.NdkPlugin”

来自分类Dev

使用 Visual Studio 2015 的 C 预处理器

来自分类Dev

Android Crashlytics ndk; build.gradle中NdkOut和NdkLibsOut的值

来自分类Dev

Android Studio / Gradle Build问题

来自分类Dev

如何在Android Studio和/或Gradle中设置NDK_MODULE_PATH?

来自分类Dev

NDK:是否可以在build.gradle中定义android NDK版本,以便本机代码使用已定义的版本?

来自分类Dev

使用gradle的Android Studio错误

来自分类Dev

使用Gradle的Android Studio配置

来自分类Dev

Android Studio Gradle 使用变量

来自分类Dev

无法使用Android Studio 0.4.0和Gradle 1.9刷新Gradle项目

来自分类Dev

使用Gradle 0.9和Android Studio的Robotium测试用例,无法迁移到Gradle 0.9

Related 相关文章

  1. 1

    Android Studio NDK:使用ndk-build进行编译,并通过Gradle Experiment获得本机支持

  2. 2

    对 NDK 中的不同库使用 ndk-build 和 cmake

  3. 3

    Android Studio,Gradle,OpenCV和NDK

  4. 4

    使用Android Studio和Gradle Experiment将libxml2构建到NDK中

  5. 5

    Gradle和Android Studio

  6. 6

    使用 sed 和 jq 更改 .ino 文件中预处理器指令的值

  7. 7

    如何使用Android Studio + Gradle + NDK构建外部C ++库?

  8. 8

    项目使用ndk-build而非Android Studio构建

  9. 9

    如何使用Android NDK和Gradle构建单个APK

  10. 10

    无法使用android-ndk和Android Studio构建项目

  11. 11

    无法使用android-ndk和Android Studio构建项目

  12. 12

    如何使用(Android Studio和Gradle的)新清单合并?

  13. 13

    在Android Studio和Gradle中使用ViewPagerIndicator库

  14. 14

    如何使用Android Studio和/或Gradle仅构建单个buildType

  15. 15

    使用Android Studio和Gradle进行单元测试?

  16. 16

    如何使用Gradle和Android Studio从资源中排除文件?

  17. 17

    使用Android Studio和Gradle进行单元测试?

  18. 18

    Android Studio:Gradle构建失败并出现错误:无法加载类“ com.android.build.gradle.ndk.NdkPlugin”

  19. 19

    Android Studio:Gradle构建失败并出现错误:无法加载类“ com.android.build.gradle.ndk.NdkPlugin”

  20. 20

    使用 Visual Studio 2015 的 C 预处理器

  21. 21

    Android Crashlytics ndk; build.gradle中NdkOut和NdkLibsOut的值

  22. 22

    Android Studio / Gradle Build问题

  23. 23

    如何在Android Studio和/或Gradle中设置NDK_MODULE_PATH?

  24. 24

    NDK:是否可以在build.gradle中定义android NDK版本,以便本机代码使用已定义的版本?

  25. 25

    使用gradle的Android Studio错误

  26. 26

    使用Gradle的Android Studio配置

  27. 27

    Android Studio Gradle 使用变量

  28. 28

    无法使用Android Studio 0.4.0和Gradle 1.9刷新Gradle项目

  29. 29

    使用Gradle 0.9和Android Studio的Robotium测试用例,无法迁移到Gradle 0.9

热门标签

归档