본문 바로가기

Cocos2d-x

Cocos2d-x 안드로이드 빌드 Android.mk 와일드카드 작성법

makefile 문법중 와일드카드 함수를 사용하면 여러파일을 동시에 가져올 수 있다.

이를 이용하여 디렉토리 내부의 .cpp 파일을 전부 컴파일 대상에 추가 할  수있다. cocos에서는 android.mk에 컴파일 할 파일을 모두 추가해줘야 하므로 해당 기능이 유용하게 사용된다.

 

FILE_LIST := $(wildcard $(LOCAL_PATH)/../../../Classes/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/**/*.cpp)

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

위와 같이 작성하면 FiILE_LIST라는 문자열에 경로의 .cpp 파일들이 추가되고,

FILE_LIST에서 $(LOCAL_PATH)/ 로 시작되는 패턴에서 $(LOCAL_PATH)/% 를 %로 치환한다. 즉 $(LOCAL_PATH)/ 부분을 지운다.

이렇게 설정하면 Classes폴더 내부의 모든 cpp 파일을 소스로 추가하므로 더이상 Android.mk 파일을 수정하지 않아도 된다.

 

HEADER_LIST := $(wildcard $(LOCAL_PATH)/../../../Classes/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/**/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/**/**/*.h)
HEADER_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/**/**/**/**/**/**/*.h)

LOCAL_C_INCLUDES := $(dir $(HEADER_LIST))

헤더도 같은 방식으로 와일드카드를 이용하여 자동으로 추가한다.

 

'Cocos2d-x' 카테고리의 다른 글

cocos2d-x Android 에서 otf 폰트 사용하기  (0) 2019.01.22