首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio如何查看JNI生成中的 preprocessor/assemble file

Android Studio如何查看JNI生成中的 preprocessor/assemble file

原创
作者头像
望天
发布2020-12-06 10:53:56
1.3K0
发布2020-12-06 10:53:56
举报
文章被收录于专栏:along的开发之旅along的开发之旅

前两天讲了如何使用CMake+make,查看生成的预处理和汇编文件。

但是Android Studio中很尴尬的是CMake+ninja,是没法使用上述方法查看预处理和汇编的。那么久这样束手无策么?

相信强大的gcc/clang,相信stackoverflow,不懈查找后,发现gcc/clang有个参数叫`-save-temps=

`, 意如其名,保存临时文件,而预处理和汇编都是生成object的中间临时文件。

当你使用CMake时,需要设置CMAKE_C_FLAGS和CMAKE_CXX_FLAGS。

CMake_C_FLAGS对C文件生效。

set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -save-temps=obj")

-save-temps 生成位置和makefile同目录

-save-temps=obj 和生成的和.o文件同目录,更方便查看

CMAKE_CXX_FLAGS对Cpp文件生效,只设置上述的C_FLAGS是无法让cpp文件生成中间文件的。

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -save-temps=obj")

CMake+ninja这样就搞定,那么远古时代的ndk-build可以生成中间文件么?当然也是可以的,`-save-temps`是gcc/clang的一个编译选项,和make/ninja是无关的。

在ndk-build上:

在Android.mk中的LOCAL_CFLAGS加入标记,ndk-build中LOCAL_CFLAGS是对C/CPP同时生效的,所以cpp不用在特意加。

LOCAL_CFLAGS := -save-temps=obj 生成位置和.o同目录

hello-jni/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/hello-jni/hello-jni.i

LOCAL_CFLAGS := -save-temps 生成位置和build.gradle一样,在hello-jni/app/hello-jni.i

最后回归下XCode:

XCode本身就带,只是觉得不是很好用

在Product/Perform Action中,就有预处理和汇编文件。不过必须在.cpp中才有用, 在.h/.hpp中试了都是无效的。

Preprocess/Assemble
Preprocess/Assemble

查看这些文件,还是为了更好的理解cpp,共勉

参考:

https://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Overall-Options.html#Overall%20Options

https://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Debugging-Options.html#Debugging%20Options

https://clang.llvm.org/docs/CommandGuide/clang.html

https://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Option-Summary.html#Option%20Summary

https://clang.llvm.org/docs/index.html#

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档