我有一个 c 源文件夹名称“clib”,其中,我有一些示例文件,例如 1.h 、1.c 、2.h 、2.c、3.c、3.h ,在该文件夹之外我有 4 个.h、4.c、4_jni.h、4_jni.c
现在为了构建“.so”,我创建了像这样的 android.mk
LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_PATH := $(MY_PATH)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE := clib
TIME_SYNC_PATH := ../../../clib
LOCAL_SRC_FILES := \
4_jni.c \
4.c \
$(TIME_SYNC_PATH)/1.c \
$(TIME_SYNC_PATH)/2.c \
$(TIME_SYNC_PATH)/3.c \
$(BUILD_SHARED_LIBRARY)
这里4.h包含1.h文件
所以我真正的问题是当我尝试构建 .so 文件时它给了我一个类似这样的错误
fatal error: 1.h: No such file or directory
如果我从 4.h 中删除 1.h ,一切都会正常构建,但我有一个很大的 c 库
具有相同类型的文件夹结构,并且某些 .h 文件包含很少的定义的 marcos ....
所以请提出如何包含位于不同文件夹中的 .h 的任何建议。
您需要指定一个LOCAL_C_INCLUDES
地点。
该变量保存头文件的位置,例如:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include/
您当然可以指定多个位置:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/project2/src/include/
请注意,当该变量被评估时ndk-build
效用,其价值被认为是相对于$(LOCAL_PATH)
,所以你需要使用$(LOCAL_PATH)
当给出路径时LOCAL_C_INCLUDES
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)