강좌 & 팁
글 수 2,412
2011.08.21 17:59:53 (*.138.143.120)
42085
프로그램 하나로 필요에 따라 여러 버전의 실행 파일을 만들어야 한다면 어떤 방법을 사용하시나요? 보통 헤더 파일을 이용합니다. 모든 모듈이 include 하는 헤더 파일에 #define 문을 추가하는 것이죠. 저 같은 경우 모든 프로젝트에 project_inc.h 라는 헤더 파일을 꼭 만들어 사용합니다. project_inc.h에 아래와 같이 define 을 사용했다고 하겠습니다.
#define USE_UART
이후에는 조건 컴파일을 위한 전처리기를 사용하면 됩니다.
poll_obj_t *obj; #ifdef USE_UART obj = uart_open( dev_name, 115200, 'n'); #else obj = tcp_server_open(); #endif
그러나 이렇게 헤더 파일을 이용하는 방법은 틀린 것은 아니지만, 그리고 많이 사용하는 방법이지만, 권하고 싶지는 않습니다. 대신에 컴파일러 옵션을 이용할 것을 권합니다. 사용하는 방법도 쉽습니다. 컴파일 옵션에 -D를 추가하기만 하면 됩니다.
$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) -DUSE_UART
컴파일 옵션을 이용하면 Makefile에서 조건문과 조합하여 더욱 다양한 버전을 생성할 수 있습니다. 예를 들어 타겟에 따라서 컴파일러와 define 문을 조합할 수 있습니다.
APP_TYPE = win32
:
CFLAGS = -o -W -Wall -O2
ifeq ($(APP_TYPE),win32)
CC = vcc
CFLAGS += -DMS_WIN32
LIBS += -lwsock32
else
CC = gcc
endif
:
다양한 버전을 생성할 때 컴파일 옵션을 사용해 보세요.