0

搜索了几个项目,我在他们的 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))什么也不做。我想知道如何将 protobuf 与 android ndk 一起使用。

4

1 回答 1

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时,我只是从AOSP git中获取了相应的Android.mk文件并删除了所有我不需要的东西。

于 2014-12-30T09:50:05.683 回答