2013-05-03 7 views
6

miałem nazwę folderu źródłowego "clib", a mam kilka przykładowych plików, takich jak 1.h, 1.c, 2.h, 2.c, 3 .c, 3.h iz boku tego folderu mam 4.h, 4.C, 4_jni.h, 4_jni.cJak określić plik nagłówkowy c w pliku android.mk

teraz, aby zbudować ".so" tworzę android.mk coś takiego

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) 

Tutaj 4.h zawiera plik 1.h

Więc moim prawdziwym problemem jest to, kiedy próbował zbudować .so plik wyskakuje mi jakiś błąd jak ten

fatal error: 1.h: No such file or directory

jeśli usunąć 1.h z 4.h, wszystko buduje w porządku, ale miałem duże C Library z tego samego rodzaju struktury folderów, a niektóre z pliku .h zawiera kilka Marcos zdefiniowane ....

Więc proszę wszelkie sugestie jak to .h, który jest w innym folderze ..

Odpowiedz

9

Musisz określić LOCAL_C_INCLUDES lokalizację.

Zmienna ta posiada lokalizacje plików nagłówkowych jak:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include/ 

Można oczywiście podać wiele lokalizacji:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include/ 
LOCAL_C_INCLUDES += $(LOCAL_PATH)/project2/src/include/ 

Zauważ, że gdy zmienna ta jest oceniana przez narzędzie ndk-build, jego wartość jest uznawana za wartość w stosunku do $(LOCAL_PATH), więc musisz podać $(LOCAL_PATH), podając ścieżkę w LOCAL_C_INCLUDES.

+1

Dzięki za odpowiedź, LOCAL_C_INCLUDES: = $ (LOCAL_PATH)/(ścieżka plików .h) – Naruto

Powiązane problemy