Android C++生成complier_command.json

  • Android C++ 程序开发现状
    在 Android 下开发 C++ 程序,我见过绝大多数人都是不使用任何语法插件,就靠硬写,写完之后再根据编译报错来修改语法错误。这也怪不得程序员,一方面,Android 使用 Arm 平台的 clang 编译器,跟 x86 平台的开发环境并不是很兼容;另一方面,Android 要求我们将 C++ 程序放在 vendor 目录下,但是我们包含的头文件却是去 kernel/include 下面找的。如果想要自己配置插件的开发环境,通常都是一顿操作猛如虎,结果还是各种报错。

  • Compdb
    深入了解 Android 之后,我发现其实 Android 内置有 compdb 可以用来生成 compile_commands.json,流程上只需要设置几个环境变量即可:

cd /path/to/android/root    # Android 源码根路径
source build/envsetup.sh
lunch xxxx-userdebug
cd /path/to/app/dir         # 项目 Android.mk/Android.bp 所在目录
export SOONG_GEN_COMPDB=1
export SOONG_GEN_COMPDB_DEBUG=1
export SOONG_LINK_COMPDB_TO=$(pwd)
mm

等待一段时间后,就会在 /path/to/app/dir 目录下看到生成好的 compile_commands.json 了。需要注意的是,有些平台似乎不接受 SOONG_LINK_COMPDB_TO,不管怎么设置都固定生成在 Android 源码根目录,所以如果你在项目目录找不到该文件或者该文件无效,就去 Android 根目录看看。

  • 另一种办法 Compiledb-ninja (最简单)
    https://github.com/schspa/compiledb-ninja
    此方法不支持kernel仓库

This is Reference1, Reference2

你可能感兴趣的:(android,c++,开发语言)