前面寫的makefile比較簡單,主要是要測試的代碼結構比較簡單。
這次,源文件、頭文件不在同一個文件夾下了,那又該如何寫makefile呢?
首先,我的代碼目錄結構如下:
1、在jni主目錄首先有一個MK文件,內容如下:
MY_LOCAL_PATH :=$(call my-dir)
LOCAL_PATH :=$(MY_LOCAL_PATH)
include $(call all-subdir-makefiles)
2、src1目錄下是一個test.c的源文件、Android.mk,其中,Android.mk內容如下:
#Android.mk和需要編譯的源文件在同一目錄下
#
LOCAL_PATH := $(call my-dir)
#源文件列表
#
common_SRC_FILES := test.c
#頭文件列表
#
common_C_INCLUDES := $(MY_LOCAL_PATH)/include
#模塊開始
#
include $(CLEAR_VARS)
#源文件列表
#
LOCAL_SRC_FILES := $(common_SRC_FILES)
#頭文件列表
#
LOCAL_C_INCLUDES += $(common_C_INCLUDES)
#生成的程序名
#
LOCAL_MODULE:= src1
#此處有三個選擇:可執行程序,動態庫,靜態庫
#
include $(BUILD_STATIC_LIBRARY)
3、pdfapi裏面是com_ycan_PDFLib.c、com_ycan_PDFLib.h、Android.mk,其中Android.mk內容如下:
LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES :=com_ycan_PDFLib.c
LOCAL_C_INCLUDES +=com_ycan_PDFLib.h \
$(MY_LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES :=src1
LOCAL_MODULE:= com_ycan_PDFLib
include $(BUILD_SHARED_LIBRARY)
4、include裏面是test.h;
心得:寫android makefile文件除了瞭解和熟悉語法之外,最重要的就是要理清代碼之間的依賴關係。
#開頭的爲makefile的註釋。