我使用-Werror
标志将所有警告视为代码中的错误。但是,我想编译从代码发出的警告仍然被视为警告。 GCC选项-Wno-error=cpp
可以正常使用,但是clang选项为-Wno-error=#warnings
,我不知道如何从clang
传递给Android.mk
。
我试过这个:
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=
传递给编译器(即=
之后的所有内容都被忽略) - 我用{{{ 1}}。
我甚至尝试过
ndk-build -n
生成ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
LOCAL_CFLAGS += -Wno-error=\\#warnings
endif
编译器标志。
如何将此编译器标志正确传递给-Wno-error=\
文件中的clang?
我正在使用NDK r12b。
编辑: 我甚至试过这个:
Android.mk
和ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang"
VAR=\#warnings
$(info VAR is '$(VAR)')
LOCAL_CFLAGS += -Wno-error=$(VAR)
endif
首先输出消息ndk-build
,但编译器参数包含VAR is '#warnings'
。这显然是一个NDK问题。
答案 0 :(得分:1)
LOCAL_CFLAGS += -Wno-error=\#warnings
几乎就在那里。但要让make
将\
视为逃避#
它需要在引用的背景下。
<强>生成文件强>
CXX := clang++
CXXFLAGS += "-Wno-error=\#warnings"
hello: HelloWorld.o
$(CXX) -o $@ $^
构建并运行:
$ make && ./hello
clang++ "-Wno-error=#warnings" -c -o HelloWorld.o HelloWorld.cpp
clang++ -o hello HelloWorld.o
Hello World