Ища несколько проектов, я нашел эту строчку на их 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.
Я не знаю, как решить это с 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, я просто взял соответствующий Android.mk
файл из AOSP Git и удалил все вещи, которые мне не нужны.