Mac에서 SDL 응용프로그램 컴파일하기

2009년 7월 1일

SDL 홈페이지의 안내 문서에 나와있는 간단한 코드를 컴파일해 보자.

단  Xcode는 쓰지 않는다.

  1. // sdltest.cc
  2.  
  3. #include <stdlib.h>
  4. #include <SDL.h>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.  SDL_Surface *screen;
  9.  
  10.  screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
  11.  if ( screen == NULL ) {
  12.   fprintf(stderr, "Unable to set 640×480 video: %s\n", SDL_GetError());
  13.   exit(1);
  14.  }
  15.  
  16.  getchar(); // 호빵님이 추가
  17. }

라이브러리 경로 같은 것들 때문에 좀 귀찮으니 Makefile도 만들어주자.

CXX = g++

INC = /opt/local/include/SDL
LIBDIR = /opt/local/lib

sdltest: sdltest.o
$(CXX) -o sdltest sdltest.o -L$(LIBDIR) -lSDL

sdltest.o: sdltest.cc
$(CXX) -c sdltest.cc -I$(INC)

clean:
rm sdltest.o

(들여쓰기 엄수. 블로그에선 제대로 표시가 안되니… Makefile 작성 요령을 모르겠다면 알아서 찾아보자.)

그러면 이런 오류 메시지가 보일 것이다.

sdl_error_1

문제 해결하기

이유는 모르겠지만, Mac으로 이식된 SDL은 SDL_main이라는 함수를 따로 만들어 시작점을 관리하고 있다. 뭐 깊이 생각할 필요는 없고, 해결책이나 찾아보자.

가장 간단한 방법은 Makefile을 이렇게 바꾸는 것이다.

CXX = g++

INC = `sdl-config –cflags`
LIB = `sdl-config –libs`

sdltest: sdltest.o
$(CXX) -o sdltest sdltest.o $(LIB)

sdltest.o: sdltest.cc
$(CXX) -c sdltest.cc $(INC)

clean:
rm sdltest.o

헤더 경로와 라이브러리 경로를 sdl-config라는 쉘스크립트를 써서 자동으로 구해 오는 것이다. `sdl-config ~~ 에서 열고 닫는 문자는 qwerty 자판(보통 자판) 기준으로 L옆에 있는 것이 아니라 ESC 밑에 있는 그 문자이니 주의.

특별히 다른 문제가 없다면(이를테면 SDL이 설치돼 있지 않은 바보같은 경우라던가…) 무사히 컴파일이 될 것이다.

SDL 컴파일 성공 스크린샷

SDL 컴파일 성공 스크린샷

(뒤에 시커먼 윈도우가 SDL 윈도우)
NSQuickDrawView가 Quartz로 바뀌었으니 앞으로 쓰지마… 라는 경고가 보이지만 내가 어떻게 할 수 있는 부분은 아니다.

addition.

hoppangbook:sdl hoppang$ sdl-config –cflags
-I/opt/local/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE
hoppangbook:sdl hoppang$ sdl-config –libs
-L/opt/local/lib -lSDLmain -lSDL -Wl,-framework,Cocoa

내 맥북의 경우다.

글쓴이: admin 카테고리: 프로그래밍 태그: , , , , ,