如何正确逃避Android.mk中的哈希?

时间:2016-07-15 12:56:14

标签: android makefile android-ndk ndk-build

我使用-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问题。

1 个答案:

答案 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