all-proto-files-under不能在android.mk上运行

时间:2014-12-29 11:30:18

标签: android c++ android-ndk protocol-buffers ndk-build

在几个项目中搜索,我在他们的android.mk $(call all-proto-files-under, $(src_proto))上找到了这一行,我尝试使用它:

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 个答案:

答案 0 :(得分:1)

我不知道如何使用all-proto-files-under函数专门解决它,但如果要在目录中添加所有源文件,可以通过以下方式执行此操作:

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

如果你愿意,我想你可以将它简化为oneliner。如果需要,还可以在给定目录下的所有子目录中添加所有源文件:

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

当我自己制作protobuf时,我只是拿走the corresponding Android.mk file from the AOSP git并删除了所有我不需要的东西。