여러 개의 모듈로 나누어 프로젝트를 작성할 때 외부 파일을 두어 각각의 Makefile에 공통적으로 적용하는 방법을

올렸습니다. 예를 들어 크로스 컴파일러를 지정하는 것을 각각의 Makefile을 수정하는 것이 아니라

config.ini 파일에 지정하면 모든 Makefile은 config.ini 내용을 참고해서 컴파일 하도록 하는 것이죠.

예를 들어 config.ini 파일에 APP_TYPE =ARM을 넣고,

APP_TYPE    =ARM

Makefile에서 APP_TYPE를 사용하려면 아래와 같이 입력하면 됩니다.

include ../config.ini

ifeq ( ( $APP_TYPE), ARM)

CROSS_PREFIX = arm-genernic

endif

여기에 하나 더나아가서 디버깅을 위해 입력한 수 많은 printf()를 컴파일할 때 무시하도록 하려면 어떻게 해야 할까요?

우선 config.ini에 DEBUG_PRINT = ON을 입력합니다.

DEBUG_PRINT = ON

이제 Makefile에서 DEBUG_PRINT 값을 확인하고 컴파일을 위한 조건 값을 정의합니다.

ifeq ($(DEBUG_PRINT), ON)
	   CFLAGS			+= -DIS_DEBUG_PRINT
   endif

컴파일 옵션에 CFLAGS를 참조하게하면 되겠지요?

%.o:%.c $(CONFIG_FILE)
	@echo "Compiling $< ..."
	$(CC) -c $(CFLAGS) -o $@ $

이제 프로그램에서 IS_DEBUG_PRINT 정의 여부를 확이합니다.

#ifdef IS_DEBUG_PRINT
    printf( "디버깅을 위한 출력입니다.");
#endif