【问题标题】:all-proto-files-under doesn't work on android.mkall-proto-files-under 在 android.mk 上不起作用
【发布时间】:2014-12-29 11:30:18
【问题描述】:

搜索了几个项目,我在他们的 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 一起使用。

【问题讨论】:

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


    【解决方案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 并删除了所有我不需要的东西。

    【讨论】:

    • 我使用我找到的 shell 脚本构建了 protobuf,它生成了两个库,一个完整库和一个精简版,但是当我尝试与lite 我有链接问题,你能使用 lite 吗?
    • 不,因为我需要在我的项目中为 protobuf 启用 RTTI,所以我从我链接到的 Android.mk 文件中构建了libprotobuf-cpp-full-gnustl-rtti 模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多