Cocos2d-x Android.mk에서 LOCAL_SRC_FILES에 Classes 폴더의 cpp 자동 추가하기

 이 팁은 이미 많은 분들이 알고 계실 듯 합니다. 작년에 정리할 때는 Android.mk 파일에 classes에 있는 cpp 파일들을 일일이 추가해야 한다고 했었는데요, 이게 영 불편한게 아니죠.

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

SOURCE_FILES := $(shell find $(CLASSES_DIRECTORY) -name *.cpp)
SOURCE_FILES := $(sort $(SOURCE_FILES))
SOURCE_FILES := $(subst $(LOCAL_PATH)/,,$(SOURCE_FILES))

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   $(SOURCE_FILES)

 기존 LOCAL_SRC_FILES를 위 내용으로 대체하면 자동으로 Classes 하위 폴더의 cpp를 검색해서 한번에 자동 추가할 수 있습니다. 맥에서 해봤는데 윈도우 Cygwin에서도 잘 될지는 아직 해보지 못했네요.

 위는 build_native.sh 인 버전 빌드할 때 였는데 파이썬 환경인 build_native.py을 윈도우 콘솔에서 하니 아래와 같은 에러가 발생하네요.

파일을 찾을 수 없습니다-*.cpp
...
[armeabi] Compile++ thumb: cocos2dcpp_shared <= main.cpp
[armeabi] SharedLibrary  : libcocos2dcpp.so
jni/hellocpp/main.cpp:15: error: undefined reference to 'AppDelegate::AppDelegat
e()'
collect2.exe: error: ld returned 1 exit status
make.exe: *** [obj/local/armeabi/libcocos2dcpp.so] Error 1

 이때는 아래와 같이 처리해줍니다.

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

LOCAL_SRC_FILES := hellocpp/main.cpp \
  $(FILE_LIST:$(LOCAL_PATH)/%=%)

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

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

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다