[英]Android CMake: how to check if cppFlags and arguments are taken into account at compile time?
[英]adding “-O0” to cppFlags fails to disable clang compile optimization in android studio
我在調試模式下構建應用程序,我注意到一些錯誤,指出“父級無法評估:沒有位置,值可能已被優化”。 因此,我嘗試像這樣在模塊build.gradle中添加“ -O0”:
externalNativeBuild {
cmake {
cppFlags "-O0 -frtti -fexceptions -std=c++11 -DANDROID_ARM_NEON=TRUE -mfloat-abi=softfp "
abiFilters "armeabi-v7a"
}
}
但是,添加“ -O0”后仍然顯示相同的錯誤。 請問如何正確禁用編譯器優化? 我的android Studio版本是2.3.3,我的sdk工具版本是26.0.2,我的ndk版本是15.1.4
如果要禁用發行版本優化,則可以僅針對C / C ++強制調試:
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DCMAKE_BUILD_TYPE:STRING=Debug'
您可以通過將以下內容添加到CMakeLists.txt
來覆蓋構建標志:
# Debug flags
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
# Release flags
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
要驗證此方法是否有效,請檢查以下位置的構建輸出:
app/.externalNativeBuild/cmake/<buildconfig>/<architecture>/build.ninja
尋找以FLAGS
開頭的行。 這實際上並不會替換現有的編譯器標志,而只是附加您的標志,並且這些標志具有優先權。
默認標志是從$ANDROID_NDK/build/cmake/android.toolchain.cmake
繼承的,因此您可以直接編輯該文件,但是,如果更新NDK,這些更改將被覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.