2014-12-29 46 views
0

搜索了幾個項目,我發現他們的android.mk $(call all-proto-files-under, $(src_proto))這一行,我試圖用這個類似:所有原文件,在不工作的android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := my_test 
src_proto := $(LOCAL_PATH)/proto 

LOCAL_CPP_EXTENSION := .cxx .cpp .cc 
LOCAL_CPPFLAGS += -std=c++11 

LOCAL_SRC_FILES := main.cc \ 
        $(call all-proto-files-under, $(src_proto)) 

# print the source files 
$(warning $(LOCAL_SRC_FILES)) 

# print only main.cc 
$(warning $(LOCAL_SRC_FILES)) 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \ 
        $(LOCAL_PATH)/proto 

# for logging 
LOCAL_LDLIBS += -llog 

# for native asset manager 
LOCAL_LDLIBS += -landroid 

include $(BUILD_SHARED_LIBRARY) 

但它不起作用,警告什麼也不打印,第二個警告只打印main.cc,$(call all-proto-files-under, $(src_proto))這行不做任何事。我想知道如何使用android ndk的protobuf。

回答

1

我不知道如何與all-proto-files-under功能,可以解決它專門,但如果你想添加目錄中的所有源文件,你可以做到這一點通過以下方式:

PROTOBUF_FILES := $(wildcard $(LOCAL_PATH)/proto/*.cc) 
LOCAL_SRC_FILES += $(PROTOBUF_FILES:$(LOCAL_PATH)/%=%) 

我想你如果您願意,可以將其簡化爲一個簡介。它也可以添加所有的源文件所有子目錄中的指定目錄下,如果你需要的是:

PROTOBUF_FILES := $(wildcard $(LOCAL_PATH)/proto/**/*.cc) 

當我建立的protobuf我自己,我只是把the corresponding Android.mk file from the AOSP git並刪除了所有的東西,我也沒必要。

+0

我使用shell腳本創建了protobuf,我發現它會生成兩個lib,一個完整的和一個lite,但是我不能使用lite,只有完整,當我嘗試鏈接lite時,我有鏈接問題,你是否能夠使用lite? – Alex

+0

不,因爲我需要在我的項目中爲protobuf啓用RTTI,所以我從鏈接的Android.mk文件構建了'libprotobuf-cpp-full-gnustl-rtti'模塊。 – Michael

相關問題