Ich verwende Gradle und CMake, um ein Android NDK-Projekt über die Befehlszeile zu kompilieren. Zuvor habe ich Ant und ndk-build
benutzt, aber ich versuche das Projekt komplett auf Gradle und CMake zu migrieren.
In meinem build.gradle
habe ich die folgenden Zeilen, um CMake aufzurufen:
Nun, wie kann ich CMake dazu zwingen, alle Compiler-Aufrufe an die Konsole zu drucken, bevor sie gemacht werden? Insbesondere möchte ich sehen, wie CMake den Compiler und Linker ausführt.
Ich habe bereits folgendes versucht, alles ohne Erfolg:
1) In meinem CMakeLists.txt
habe ich folgende Zeile eingefügt:
Hatte keinen Effekt.
2) Ich habe den Build so gestartet:
%Vor%Gradle hat einige Sachen gedruckt, aber keine Compiler-Aufrufe.
3) Und so:
%Vor%Gradle hat viele Sachen gedruckt, aber keine Compiler-Aufrufe.
Also hat keiner dieser drei Versuche das gemacht, was ich wollte, was mich wundern lässt, wie ich sehen kann, wie CMake mit meinen individuellen Quelldateien klarkommt?
In Android Studio erstellt grdle das Verzeichnis .externalNativeBuild
unter dem Modulstamm für jedes Modul mit NDK-Integration über CMake oder ndk-build.
Bei CMake ist das Gradle-Plugin ziemlich ausführlich. Für jede Build-Variante wird ein separates Unterverzeichnis erstellt, z. .externalNativeBuild/cmake/debug/x86
oder .externalNativeBuild/cmake/release/armeabi
, etc.
Jedes Verzeichnis enthält einige nützliche Dateien: cmake_build_command.txt beschreibt die tatsächlichen Parameter, die an CMake übergeben werden; android_gradle_build.json zeigt, welche Parameter das Gradle-Plugin für Ihre Binärdateien abgeleitet hat. Aus build.ninja können Sie ableiten, wie diese Parameter für jeden Kompilierungs- oder Verknüpfungsschritt angewendet wurden.
Für ndk-build
ist die Datei android_gradle_build.json
ebenfalls sehr nützlich. ndkBuild_build_command.txt
listet alle Parameter auf, die an den Befehl ndk-build übergeben wurden, und ndkBuild_build_output.txt
ist die ungekürzte Ausgabe dieses Befehls. Sie können einfach V=1
zu den Argumenten hinzufügen, z. B.
Für CMake
ist das relevante Argument "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
(siehe Erklärung
und Alternativen ):
Ohne CMAKE_VERBOSE_MAKEFILE
zeigt die Gradle-Konsole Folgendes an:
Mit "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
bekomme ich Tonnen von Ausgaben:
Die offensichtliche Datei .externalNativeBuild/cmake/debug/armeabi/cmake_build_output.txt
enthält keine interessanten Informationen (außer Sie haben Probleme mit der CMake-Konfiguration per se ). Gradle schreibt diese Ausgabe nicht in die Datei, aber Sie können die Befehlszeilenumleitung verwenden, siehe Wo sind Gradle-Protokolle? .
Tags und Links gradle android-ndk cmake