0

NDK ライブラリにコンパイルしようとしている既存のコードがいくつかあります。正しく実行する必要がある単純な #ifndef がありますが、私の Android.mk では、LOCAL_CFLAGS で定義した変数が認識されません。コマンドラインオプションだと思います

NDK_LOG オプションを指定して ndk-build を実行すると、これが表示されるまですべて正常にコンパイルされます。

[armeabi-v7a] Compile++ thumb: NDKImageProcessor <= NDKImageProcessor.cpp
arm-linux-androideabi-g++: error: unrecognized command line option '-WINONLY=1'
make: *** [obj/local/armeabi-v7a/objs/NDKImageProcessor/NDKImageProcessor.o] Error 1

私は単にコンパイルに含まれているものから次のものを取得しようとしています:

#ifndef WINONLY
    #import <CoreGraphics/CGGeometry.h>
#endif

Android.mk は非常に簡単です。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDKImageProcessor

LOCAL_SRC_FILES := NDKImageProcessor.cpp
LOCAL_SRC_FILES += ../../../../SharedSrc/Image.cpp

LOCAL_LDLIBS := -llog

LOCAL_CFLAGS := -WINONLY=1

include $(BUILD_SHARED_LIBRARY)

その LOCAL_CFLAGS 行を単純に追加しないと、コンパイラはその iOS コードをコンパイルしようとしますが、これは明らかに失敗です。

4

1 に答える 1

1

GCC のドキュメントから(Clang を使用する場合も同じはずです):

-D name
name を定義 1 のマクロとして事前定義します。

-D name=definition
の内容definitionはトークン化され、'#define' ディレクティブの変換フェーズ 3 で表示されたかのように処理されます。特に、定義は埋め込まれた改行文字によって切り詰められます。

したがってWINONLY、値 1 で定義するには、次のようにします。

LOCAL_CFLAGS := -DWINONLY=1

または単に

LOCAL_CFLAGS := -DWINONLY
于 2015-09-10T05:28:20.540 に答える