在Android Studio中禁用未使用的const变量构建错误(Gradle构建)

时间:2019-06-26 09:01:18

标签: android android-studio-3.0 clang++

我正在调试Android本机C ++代码,并且有一些用于调试目的的变量和函数,我想将它们保留在我的代码中。

问题是每次我尝试使代码构建失败并出现以下错误

***\android-sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe 
    [[REMOVED FOR CLARITY]]
    -Werror=format-security
    -std=gnu++11
    -Wall
    -Werror
    -O0
    -fno-limit-debug-info
    -fPIC -MD -MT CMakeFiles/native-activity.dir/main.cpp.o
    -MF CMakeFiles\native-activity.dir\main.cpp.o.d
    -o CMakeFiles/native-activity.dir/main.cpp.o
    -c ***/app/src/main/cpp/main.cpp
***/app/src/main/cpp/main.cpp:48:19: error: unused variable 'VERTEX_SHADER' [-Werror,-Wunused-const-variable]
    static const char VERTEX_SHADER[] =
                      ^
1 errors generated.
ninja: build stopped: subcommand failed.

哪个建议如果要禁用此错误,则需要禁用标志unused-const-variable

所以我这样修改了gradle构建文件

defaultConfig {
    externalNativeBuild {
        cmake {
            cppFlags '-Wno-unused-const-variable','-Wno-unused-variable'
            arguments '-DANDROID_STL=c++_static'
        }
    }
}

现在,当我尝试构建项目时,我看到了相同的错误,只是将cppFlags添加到命令行参数无效。

***\android-sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe
    [[REMOVED FOR CLARITY]]
    -Werror=format-security
    -Wno-unused-const-variable
    -Wno-unused-variable
    -std=gnu++11
    -Wall
    -Werror
    -O0
    -fno-limit-debug-info
    -fPIC -MD -MT CMakeFiles/native-activity.dir/main.cpp.o
    -MF CMakeFiles\native-activity.dir\main.cpp.o.d
    -o CMakeFiles/native-activity.dir/main.cpp.o
    -c ***/Projects/AndroidNDK/app/src/main/cpp/main.cpp
***/app/src/main/cpp/main.cpp:48:19: error: unused variable 'VERTEX_SHADER' [-Werror,-Wunused-const-variable]
static const char VERTEX_SHADER[] =
                  ^
1 errors generated.
ninja: build stopped: subcommand failed.

我什至试图从Android Studio->编辑器->检查-> C ++->未使用的代码中禁用未使用的代码,这也没有效果。

问题

如何在警告时禁用构建失败,或者如果不可能的话,请禁用此错误?

注意:

我正在Gradle构建NDK本机C ++代码项目中使用android studio 3.4.1

1 个答案:

答案 0 :(得分:0)

我自己找出了问题所在。 GCC Warning Options指定:

  

-Werror:将所有警告变为错误。

     

-Wall:启用所有有关某些用户认为有问题的构造的警告

这些不是在gradle构建级别上设置的,而是在以下行的CMakeLists.txt文件中包含了它们

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")

仅删除最后两个选项就足以使我和cmake开心。 现在,我需要修改我的MAKE文件,以将这些参数包括在内以用于发布版本,并删除它们以进行调试版本。