Erzwinge CMake im ausführlichen Modus über Gradle und das Android NDK

8

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:

%Vor%

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:

%Vor%

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?

    
Andreas 16.04.2017, 16:43
quelle

1 Antwort

10

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.

%Vor%

Für CMake ist das relevante Argument "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" (siehe Erklärung  und Alternativen ):

%Vor%

Ohne CMAKE_VERBOSE_MAKEFILE zeigt die Gradle-Konsole Folgendes an:

%Vor%

Mit "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" bekomme ich Tonnen von Ausgaben:

%Vor%

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? .

    
Alex Cohn 16.04.2017, 21:14
quelle

Tags und Links