在Android NDK项目中从命令行运行CMake

bph*_*bph 5 android cmake android-ndk

如何从Android项目的其余部分独立运行NDK Cmake构建,理想情况是从Android Studio外部的命令行运行?

相当于ndk-build从较早的Android NDK项目的jni目录运行.

我需要准确调查对编译器的调用是什么样的,在Android Studio中构建整个项目时似乎无法获取此信息

我的第一次尝试只是从project/app包含的目录运行cmake CMakeLists.txt,但这告诉我cmake没有安装 - 那么Android Studio如何管理它呢?

Dan*_*ert 13

如果您的目标是从命令行运行(而不是尝试完全执行gradle正在执行的操作),只需按照通常的方式使用cmake:

$ cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
    -DANDROID_ABI=whatever $YOUR_SOURCE_DIR
Run Code Online (Sandbox Code Playgroud)

或者,您可以从命令行运行./gradlew.


Bra*_*ram 5

您最初的问题是,在使用Android Studio构建时无法看到命令行调用.

您可以通过编辑app/build.gradle文件来获取编译器的命令行参数.

defaultConfig {
    ...
    externalNativeBuild {
        cmake {
            ...
            arguments "-DCMAKE_VERBOSE_MAKEFILE=1", ...
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

在Adroid Studio的Gradle Console窗格中,您将看到编译器和链接器的命令行,如下所示:

[1/176]/home/bram/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target = armv7-none-linux-androideabi --gcc-toolchain = /home/bram/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 --sysroot =/home/bram/android-sdk-linux/ndk-bundle/sysroot -isystem/home/bram/android-sdk-linux/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API __ = 19 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march = armv7-a -mfloat-abi = softfp -mfpu = vfpv3-d16 -fno-integrated-as -marm -mfpu = neon -Wa, - noexecstack -Wformat -Werror = format-security -Os -DNDEBUG -fPIC -MD -MT /home/bram/src/GPGOAP/CMakeFiles/gpgoap.dir/astar.co -MF /home/bram/src/GPGOAP/CMakeFiles/gpgoap.dir/astar.cod -o /home/bram/src/GPGOAP/CMakeFiles/gpgoap.dir/astar.co -c /home/bram/src/GPGOAP/astar.c