我有一个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,它位于不同的文件夹中..
答案 0 :(得分:15)
您需要指定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)
1}}。