7

我有 ac 源文件夹名称“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..

4

1 回答 1

16

您需要指定一个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

于 2013-05-03T07:07:11.853 回答