gpt4 book ai didi

android - 如何在 Android.mk 中正确转义散列?

转载 作者:行者123 更新时间:2023-11-30 01:11:29 31 4
gpt4 key购买 nike

我正在使用 -Werror 标志将所有警告视为代码中的错误。但是,我希望从代码发出的编译警告仍被视为警告。 GCC 选项是 -Wno-error=cpp 可以正常工作,但是 clang 选项是 -Wno-error=#warnings 我不知道如何传递从 Android.mkclang

我已经试过了:

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 问题。

最佳答案

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

关于android - 如何在 Android.mk 中正确转义散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396721/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com