Android NDK: Including boost c++ library

后端 未结 2 632
灰色年华
灰色年华 2020-12-08 07:26

I am trying to use a boost library inside my android application, using the NDK. I have found a couple of success stories here and here, but I can\'t say the same about me.

相关标签:
2条回答
  • 2020-12-08 08:04

    Here: http://silverglint.com/boost-for-android/ you can find a simple script that lets you build a modern version of boost for android, or simply download prebuilt boost binaries.

    Also included is a sample test app that shows you how to include/link the boost headers/binaries

    0 讨论(0)
  • 2020-12-08 08:18

    I built the boost libraries using Boost-for-Android. Then I have in my boost/include/lib directory the android makefile boost.mk

    LOCAL_PATH := $(call my-dir)
    
    # boost_date_time
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_date_time
    LOCAL_SRC_FILES := libboost_date_time-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    
    # boost_filesystem
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_filesystem
    LOCAL_SRC_FILES := libboost_filesystem-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    
    # boost_thread
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_thread
    LOCAL_SRC_FILES := libboost_thread-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    
    # boost_system
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_system
    LOCAL_SRC_FILES := libboost_system-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    
    # boost_program_options
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_program_options
    LOCAL_SRC_FILES := libboost_program_options-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    
    # boost_chrono
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := boost_chrono
    LOCAL_SRC_FILES := libboost_chrono-gcc-mt-1_53.a
    include $(PREBUILT_STATIC_LIBRARY)
    

    and my module where i use some of the boost libraries looks like this

    LOCAL_PATH := $(call my-dir)
    
    # SignalServer, executable 
    #
    include $(CLEAR_VARS)
    LOCAL_CFLAGS           := -DTIXML_USE_TICPP
    #LOCAL_CFLAGS           += -DDEBUG
    LOCAL_STATIC_LIBRARIES := boost_thread \
        boost_system \
        boost_filesystem \
        boost_program_options \
        boost_chrono \
    LOCAL_STATIC_LIBRARIES += ticpp \
        tia \
        tobicore \
        tobiid \
        tid \
        gdf
    LOCAL_MODULE           := signalserver
    LOCAL_C_INCLUDES       := $(LOCAL_PATH)/include
    LOCAL_C_INCLUDES       += $(LOCAL_PATH)/extern/include
    LOCAL_C_INCLUDES       += $(LOCAL_PATH)/../boost/include/boost-1_53
    LOCAL_SRC_FILES        := #cpp source
    
    include $(BUILD_EXECUTABLE)
    

    in addition I have an Android.mk where all subdir makefiles are listed

    TOP_PATH := $(call my-dir)
    
    include $(TOP_PATH)/boost/lib/boost.mk
    include $(TOP_PATH)/signalserver/signalserver.mk
    .
    .
    

    and my Application.mk:

    APP_PLATFORM          := android-14
    APP_ABI               := armeabi-v7a
    #APP_OPTIM             := debug
    #NDK_DEBUG             := 1
    
    NDK_TOOLCHAIN_VERSION := 4.6
    APP_STL               := gnustl_static
    APP_CPPFLAGS          := -fexceptions -frtti
    
    0 讨论(0)
提交回复
热议问题