Почему компилятор NDK не распознает определение LOCAL_CFLAGS?

У меня есть некоторый уже существующий код, который я пытаюсь скомпилировать в библиотеку NDK. Есть просто #ifndef, который мне нужно выполнить правильно, но в моем Android.mk переменная, которую я определил с помощью LOCAL_CFLAGS, не распознается. Он думает, что это опция командной строки

Когда я запускаю ndk-build с опцией NDK_LOG, все прекрасно скомпилируется, пока я не увижу это:

[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, что, очевидно, не допускается.

0

Решение

От документация GCC (должно быть так же, если вы используете Clang):

-D name
Предопределите имя как макрос, с определением 1.

-D name=definition
Содержание definition токены и обрабатываются так, как если бы они появились на третьем этапе перевода в директиве «#define». В частности, определение будет усечено встроенными символами новой строки.

Чтобы определить WINONLY со значением 1, которое вы используете:

LOCAL_CFLAGS := -DWINONLY=1

или просто

LOCAL_CFLAGS := -DWINONLY
1

Другие решения


По вопросам рекламы [email protected]