如何独立于Android项目的其余部分运行NDK Cmake构建,理想情况是从Android Studio外部的命令行运行?
相当于从jni目录运行ndk-build
,用于较旧的Android NDK项目。
我需要准确调查对编译器的调用是什么样的,在Android Studio中构建整个项目时似乎无法获取此信息
我的第一次尝试只是从包含project/app
的{{1}}目录运行cmake,但这告诉我CMakeLists.txt
未安装 - 那么Android Studio如何管理它呢? ?
答案 0 :(得分:10)
如果您的目标是从命令行运行(而不是尝试完全 gradle正在做什么),那么只需按照通常的方式使用cmake:
$ cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=whatever $YOUR_SOURCE_DIR
或者,您可以从命令行运行./gradlew
。
答案 1 :(得分:5)
您最初的问题是,在使用Android Studio构建时无法看到命令行调用。
您可以通过编辑app / build.gradle文件获取编译器的命令行参数。
defaultConfig {
...
externalNativeBuild {
cmake {
...
arguments "-DCMAKE_VERBOSE_MAKEFILE=1", ...
}
}
}
在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
答案 2 :(得分:2)
有关接受的答案的详细信息:
传递给CMake的完整参数集将写入:
<project-root>/<module-root>/.externalNativeBuild/cmake/<build-type>/<ABI>/cmake_build_command.txt`
有关详细信息,请参见:https://developer.android.com/ndk/guides/cmake.html#build-command