2015-09-09 1 views
0

J'ai du code préexistant que j'essaye de compiler dans une bibliothèque NDK. Il y a simplement un #ifndef que je dois exécuter correctement, mais dans mon Android.mk, la variable que j'ai définie avec LOCAL_CFLAGS n'est pas reconnue. Il pense que c'est une option de ligne de commandePourquoi le compilateur NDK ne reconnaît-il pas une définition LOCAL_CFLAGS?

Quand je lance NDK-construire avec l'option NDK_LOG tout compile bien jusqu'à ce que je vois ceci:

[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 

Je suis tout simplement essayer d'obtenir les éléments suivants d'être inclus dans compilation:

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

Android.mk est assez simple:

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) 

Si je n'ajoute simplement pas cette ligne LOCAL_CFLAGS, le compilateur essaye de compiler ce code iOS, ce qui est évidemment un non-go.

+0

Vous voulez probablement 'add_definitions'. À la fin, cela finit aussi sur la ligne de commande du compilateur, mais c'est un peu plus clair sur le plan sémantique. – MSalters

+0

@ MSalters, merci pour l'aide. J'ai essayé le bc de Michael c'était le premier et ça a bien fonctionné. – Alyoshak

Répondre

1

De the GCC documentation (il devrait être le même si vous utilisez Clang):

-D name
nom Prédéfinir comme une macro, avec définition 1.

-D name=definition
Le contenu de definition sont tokenizé traitées comme si elles apparaissaient lors de la phase de traduction trois dans une directive "#define". En particulier, la définition sera tronquée par des caractères de nouvelle ligne incorporés.

Donc, pour définir WINONLY avec la valeur 1 vous pouvez utiliser:

LOCAL_CFLAGS := -DWINONLY=1 

ou simplement

LOCAL_CFLAGS := -DWINONLY 
+0

c'était tout. Merci surtout pour la réponse détaillée avec un exemple. – Alyoshak