在 Android Studio 中禁用未使用的常量变量构建错误(Gradle 构建)
Disable unused-const-variable build error in Android Studio (Gradle build)
我正在调试 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 -> Editor -> inspection -> C++ -> Unused Code 中禁用 Unused code,这也没有效果。
问题
如何禁用警告时构建失败或者如果不可能禁用此错误?
注:
我正在使用 android studio 3.4.1 开发 Gradle 构建 NDK 原生 C++ 代码项目
我自己解决了这个问题。 GCC Warning Options 指定:
-Werror: Make all warnings into errors.
-Wall: This enables all the warnings about constructions that some users consider questionable
这些未在 gradle 构建级别上设置,而是包含在 CMakeLists.txt
文件中的下一行
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
简单地删除最后两个选项就足以让我和 cmake 都开心了。
现在我需要修改我的 MAKE 文件以将这些参数包含回发布版本并删除它们以进行调试版本。
我正在调试 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 -> Editor -> inspection -> C++ -> Unused Code 中禁用 Unused code,这也没有效果。
问题
如何禁用警告时构建失败或者如果不可能禁用此错误?
注:
我正在使用 android studio 3.4.1 开发 Gradle 构建 NDK 原生 C++ 代码项目
我自己解决了这个问题。 GCC Warning Options 指定:
-Werror: Make all warnings into errors.
-Wall: This enables all the warnings about constructions that some users consider questionable
这些未在 gradle 构建级别上设置,而是包含在 CMakeLists.txt
文件中的下一行
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
简单地删除最后两个选项就足以让我和 cmake 都开心了。 现在我需要修改我的 MAKE 文件以将这些参数包含回发布版本并删除它们以进行调试版本。