簡體   English   中英

在cppFlags中添加“ -O0”無法在android studio中禁用clang編譯優化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM