【发布时间】:2016-07-15 12:56:13
【问题描述】:
我使用-Werror 标志将所有警告视为我的代码中的错误。但是,我希望编译从代码发出的警告仍被视为警告。一个 GCC 选项是 -Wno-error=cpp,它可以正常工作,但是 clang 选项是 -Wno-error=#warnings,我不知道如何从 Android.mk 传递给 clang。
我试过这个:
ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
LOCAL_CFLAGS += -Wno-error=#warnings
endif
还有这个(如this SO answer 中所建议的):
ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
LOCAL_CFLAGS += -Wno-error=\#warnings
endif
但是,两个版本都将# 视为注释的开头,ndk-build 将-Wno-error= 传递给编译器(即忽略= 之后的所有内容)- 我使用ndk-build -n 进行了检查。
我什至尝试过
ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
LOCAL_CFLAGS += -Wno-error=\\#warnings
endif
产生-Wno-error=\ 编译器标志。
如何正确地将这个编译器标志从Android.mk文件传递给clang?
我正在使用 NDK r12b。
编辑: 我什至试过这个:
ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
VAR=\#warnings
$(info VAR is '$(VAR)')
LOCAL_CFLAGS += -Wno-error=$(VAR)
endif
和ndk-build首先输出消息VAR is '#warnings',但编译器参数包含-Wno-error=。这显然是一个 NDK 问题。
【问题讨论】:
标签: android makefile android-ndk ndk-build