2017-06-20 11 views
0

アンドロイドNDKを使用してネイティブアンドロイドライブラリをビルドするには、CMakeLists.txt経由でプリプロセッサディレクティブを渡します。Androidスタジオでプリプロセッサディレクティブを確認するGradle Build、NDK、CMake

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の出力より詳細な私は、実際のコンパイラの呼び出しを参照し、これらのプリプロセッサディレクティブが存在しているチェックできることを確認する手段はありますか?

+1

ここに私の答えで説明したようにあなたが-DCMAKE_VERBOSE_MAKEFILE = 1を使用することができます。https://stackoverflow.com/a/44709786/301166 – Bram

答えて

1

答えは、アンドレイドプロジェクトのアンドロイドNDKコンポーネント(共有ライブラリ)をビルドするためにCMakeを利用し、CMakeはビルドシステムとしてコンパイラ呼び出しを処理することを理解することです。 Android NDKが使用するコンパイラは、デフォルトでLLVM-> Clangに設定されています。

実際にClangコールを表示するには、アンドロイドプロジェクトの各ターゲットにbuild.ninja個のファイルを見つける必要があります。

私の場合、私はarmeabi-v7aターゲットアーキテクチャのためだけにビルドしています。ディレクトリのいずれかに

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

cdと実行します:したがって、関連build.ninjaファイルがで発見され-vオプションすなわち

ninja -v 

が打ち鳴らすコンパイラネイティブビルドに対するすべての呼び出しを参照するには、キーであります(android NDK)のアンドロイドプロジェクトの一部が生成されます。

Note CMYKをアンドロイドパッケージマネージャー経由でインストールした場合、ninjaはPATHにある場所にインストールされていないことがあります。次のように私にとっては忍者のバイナリが配置されている:

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

(cmakeのバイナリと同じディレクトリ)

ので、私は私のアンドロイドプロジェクトのデバッグarmeabi-v7aビルドのすべての打ち鳴らすコンパイラの呼び出しを参照する私がする必要はあり実行:

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

関連する問題