2016-07-15 7 views
1

-Werrorフラグを使用して、すべての警告をコード内のエラーとして処理しています。しかし、私はコードから発行されたコンパイル警告を警告として扱いたいと思います。これのGCCオプションは-Wno-error=cppですが正しく動作しますが、clangオプションはclangAndroid.mkから渡す方法がわからない-Wno-error=#warningsです。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=を渡しますつまり、=以降のものはすべて無視されます) - ndk-build -nで検査しました。

私も-Wno-error=\コンパイラフラグを生成

ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang" 
    LOCAL_CFLAGS += -Wno-error=\\#warnings 
endif 

を試みました。

Android.mkファイルからこのコンパイラフラグを正しく渡すにはどうすればいいですか?

私はNDK r12bを使用しています。

EDIT:VAR is '#warnings'まだコンパイラの引数が-Wno-error=が含まれている

ifeq "$(findstring clang,$(NDK_TOOLCHAIN_VERSION))" "clang" 
    VAR=\#warnings 
    $(info VAR is '$(VAR)') 
    LOCAL_CFLAGS += -Wno-error=$(VAR) 
endif 

ndk-build最初の出力メッセージ: 私もこれを試してみました。これは明らかにNDKの問題です。

答えて

1
LOCAL_CFLAGS += -Wno-error=\#warnings 

がほぼあります。しかし、make\として処理するには、# を引用符で囲む必要があります。

Makefileの

CXX := clang++ 

CXXFLAGS += "-Wno-error=\#warnings" 

hello: HelloWorld.o 
    $(CXX) -o [email protected] $^ 

ビルドして実行します。

$ make && ./hello 
clang++ "-Wno-error=#warnings" -c -o HelloWorld.o HelloWorld.cpp 
clang++ -o hello HelloWorld.o 
Hello World 
+1

はそれをしようとしました。コマンドラインで '' -Wno-error = 'が終了します。これはメークファイルの問題ではなく、NDKの問題であると思われます。[here](https://github.com/android-ndk/) ndk/issues/161)。 – DoDo

関連する問題