2017-06-21 65 views
3

如何從Android項目的其餘部分獨立運行NDK Cmake構建,理想情況下是從Android Studio外部的命令行運行?在Android NDK項目中從命令行運行CMake

相當於從jni目錄運行ndk-build以稍微老一點的Android NDK項目。

我需要調查正是調用編譯器的樣子,我似乎無法從Android Studio中

我第一次嘗試中建設整個項目的時候得到這個信息只是從運行cmake包含CMakeLists.txtproject/app目錄,但是這告訴我沒有安裝cmake - 那麼Android Studio如何管理構建它呢?

+0

確定 - 現在已經找到了Android/SDK/cmake的/ 3.6.3155560/bin目錄 - 進取.. – bph

+0

這是一個相關的和有用的資源 - > HTTPS:/ /developer.android.com/ndk/guides/cmake.html#build-command – bph

+0

這可能與你想要做的事情有關,儘管它與你的問題不一樣:https://stackoverflow.com/questions/46530158 /你怎麼做全套編譯器和鏈接器標誌使用的ndk生成 –

回答

6

如果你的目標只是在命令行中運行(而不是試圖做正是什麼gradle這個正在做),只需使用CMake的你通常會的方式:

$ cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \ 
    -DANDROID_ABI=whatever $YOUR_SOURCE_DIR 

另外,您可以從命令行運行./gradlew

+1

這是正確的,但我發現,檢查clang編譯器的方式打電話給wa s更深一層,運行build.ninja文件時使用-v選項 – bph

+0

'-DANDROID_PLATFORM = android-XXX'也可能是必要的,其中XXX是21或16,或者任何你需要的。 –

4

您原來的問題是,您在使用Android Studio構建時看不到命令​​行調用。

你可以通過編輯你的app/build.gradle文件來得到編譯器的命令行參數。

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

} 

在的Adroid Studio的搖籃控制檯窗格中,你會再看看編譯器的命令行和連接器,像這樣:

[176分之1] /家/ 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 = v fpv3-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 /家用/ BRAM/src目錄/ GPGOAP/astar.c

+0

這很有趣,因爲我添加了集合(CMAKE_VERBOSE_MAKEFILE)到我的CMakeLists.txt而不是build.gradle文件,但它似乎沒有做任何事情。我認爲這兩種方法應該有效地達到同樣的目的?我會回去仔細檢查.. – bph