cocos2d-x에 android 정적 lib 만들어 붙일때 Android.mk 변동사항

프레임워크라고 부르기도 민망한 기능들을 기존에는 게임 프로젝트에 직접 추가해서 작업중이었습니다. 몇몇 기능들이 배포 가능 수준이 되면 팀원들과 공유를 소스로 공유했지만 그 부분에 있어서 불필요한 과정이 생겨서 lib로 만들어 sdk로 배포하자고 마음 먹고 따로 Framework라는 프로젝트를 만들어 봤습니다.

일단 win32환경에서 빌드 및 실행이 잘 되야하는 것은 당연하겠고, Framework에 Android.mk를 아래와 같이 작성했습니다. 보통 대충 빨리 만들다보면 create-android-project.bat로 해서 바로 cocos2d-x 폴더안에 게임 프로젝트들을 만드실텐데요 저는 스샷과 같이 폴더 구조가 다른데 이부분 참고하시면서 보시면 되겠습니다.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#모듈 이름
LOCAL_MODULE := framework_static

#빌드되서 만들어지는 모듈 파일명
LOCAL_MODULE_FILENAME := libframework

LOCAL_STATIC_LIBRARIES := curl_static_prebuilt

#작업하신 cpp들을 넣어주시면 된다
LOCAL_SRC_FILES := \
frameworkcppfiles

LOCAL_C_INCLUDES := $(LOCAL_PATH) \
                    $(LOCAL_PATH)/../cocos2d-2.0-rc2-x-2.0.1/cocos2dx \
                    $(LOCAL_PATH)/../cocos2d-2.0-rc2-x-2.0.1/cocos2dx/include \
                    $(LOCAL_PATH)/../cocos2d-2.0-rc2-x-2.0.1/cocos2dx/kazmath/include \
                    $(LOCAL_PATH)/../cocos2d-2.0-rc2-x-2.0.1/cocos2dx/platform/android

#static lib를 만든다
include $(BUILD_STATIC_LIBRARY)

$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)

여기서 각 프로젝트에 따라 변동사항은  LOCAL_MODULE, LOCAL_SRC_FILES정도 되겠네요. 아 curl도 빠질수도 있겠구요.

다음으로 실제 게임 프로젝트의 Android.mk도 아래와 같이 추가합니다.

#Framework path 추가

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                    $(LOCAL_PATH)/../../../../Engine/Framework


#framework_static 추가
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static framework_static

$(call import-module,$(COCOS2DX_ROOT)/../Framework)

특이한 것은 LOCAL_C_INCLUDES에는 $(LOCAL_PATH) 기준으로 call import-module시에는 $(COCOS2DX_ROOT) 기준으로 해줘야 인식이 되더군요. 자세하게는 파보지 않아서..

이것으로 외부 lib만들어 빌드하는 준비과정은 끝났습니다. 빌드하시면서 나오는 문제는 제가 그동안 포스팅 했던 것을 찾아보시면 될 듯 싶구요, 성공을 하게되면 아래처럼 obj파일이 생성 됩니다.


댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.