【问题标题】:How to specify c header file in android.mk file如何在android.mk文件中指定c头文件
【发布时间】:2013-05-03 06:33:13
【问题描述】:

我有一个 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..

【问题讨论】:

    标签: android android-ndk java-native-interface


    【解决方案1】:

    您需要指定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_C_INCLUDES 中给出路径时需要使用$(LOCAL_PATH)

    【讨论】:

    • 感谢您的回答,LOCAL_C_INCLUDES := $(LOCAL_PATH)/(.h 文件的路径)
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多