在几个项目中搜索,我在他们的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。
答案 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并删除了所有我不需要的东西。