Cocos2d-xでBoostを使う


iOSとAndroidプロジェクトでBoostを使用する手順のメモ
タイトルはCocos2d-xとしたがC++を使うプロジェクトなら
別にCocos2d-xは無くても使用可能

※ ただしヘッダーオンリーで使えるライブラリのみ 参考

実行した環境

  • Xcode v6.3.2
  • Android NDK r10e
  • Cocos2d-x v3.6

Boostをダウンロードしてプロジェクトに追加する

http://www.boost.org/

インクルードパスを設定する(iOS)

TARGETS > Build Settings > Search Paths > Header Search Paths
に "$(SRCROOT)/../Libraries/boost/include" を追加する。

インクルードパスを設定する(Android)

Android.mkに 
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Libraries/boost/includ
を追加する

Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

# ここに追加
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Libraries/boost/include

# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END


LOCAL_STATIC_LIBRARIES := cocos2dx_static

# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END

include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END

使ってみる

#include <string>
#include <boost/lexical_cast.hpp>
#include <boost/uuid/random_generator.hpp>
#include <boost/uuid/uuid_io.hpp>
#include "cocos2d.h"
void test_boost() {
    boost::uuids::random_generator gen;
    auto uuid = boost::lexical_cast<std::string>(gen());
    CCLOG("uuid = %s", uuid.c_str());
}

おわり