編寫 android.mk 中 LOCAL_C_INCLUDES 的技巧
已廢棄, 請參考Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES
在編寫android.mk
的過程中,免不了要修改LOCAL_C_INCLUDES
來設置頭文件的include目錄, 一般寫成這樣
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \ $(LOCAL_PATH)/../../Classes/game \ $(LOCAL_PATH)/../../Classes/logic \ $(LOCAL_PATH)/../../Classes/view
有一個目錄就要寫一行, 實在繁瑣, 有沒有寫法可以把源碼目錄下的所有子目錄都引入呢, 看下面
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ ) LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES:$(LOCAL_PATH)/%:=$(LOCAL_PATH)/%)
即可把$(LOCAL_PATH)/../../Classes
目錄和子目錄全部包含進來
還有一種寫法, 就是使用sed
命令, 效果是一樣的, 我對sed
不是很熟悉, 簡單寫了一下
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ | sed "s/:/ /g" )
這兩行和上面三行的結果是一樣的
如果要方便的引入源文件到android.mk
文件裏, 可以參考我的這篇post:編寫Android.mk中的LOCAL_SRC_FILES的終極技巧
以上代碼在 mac + NDK r8e 下測試通過