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 |
---|