我想向我的Android NDK项目添加一个包含路径,但是编译器找不到包含的文件。我再次检查了包含的文件在我的系统上是否存在。我在这里做错了什么?
Android.mk:
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_CFLAGS := -Wno-write-strings
LOCAL_C_INCLUDES +:= $(LOCAL_PATH)
LOCAL_CFLAGS +:= -O3
LOCAL_CPPFLAGS +:=$(LOCAL_CFLAGS)
LOCAL_CFLAGS := -I/absolute/path/to/my/include //--->here the include path is set
LOCAL_SRC_FILES := hello-jni.cpp
LOCAL_LDLIBS := -ldl -llog -lc
include $(BUILD_SHARED_LIBRARY)
jni / hello-jni.cpp中包含的标头:
extern "C" {
#include <codecs/codecs.h>
#include <test/test.h>
#include <mymath/mymath.h>
}
....
错误日志:
jni/hello-jni.cpp:9:34: fatal error: codecs/codecs.h: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi/objs/hello-jni/hello-jni.o] Error 1
我认为问题是此行:
LOCAL_CPPFLAGS +:=$(LOCAL_CFLAGS)
使用+:=
此处意味着所使用的LOCAL_CFLAGS的值是在声明LOCAL_CPPFLAGS时的值。此时,尚未设置LOCAL_CFLAGS(在下一行设置)。尝试将其更改为:
LOCAL_CPPFLAGS +=$(LOCAL_CFLAGS)
它将在每次使用时评估LOCAL_CPPFLAGS,并将获得正确的值。或者,在LOCAL_CPPFLAGS中使用LOCAL_CFLAGS之前先声明它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句