makefile 작성시 궁금한점..
안녕하세요.
이번에 프로젝트를 쉽게 관리 하려구 makefile 을 작성하였는데요.
매크로를 정의해서, 입력된 매크로에 따라서 폴더 나뉘고 / 라이브러리 파일도 적절하게 조절하고 있습니다.
헌데, 궁금한점이..
제가 프로젝트에 따라서 , make 커맨드 입력시 정의해줘야 할 매크로가 2개 또는 3개 정도로 나뉘는데요.
매크로 디폴트 값은 주고싶지 않아서, 만약 정의해줘야할 매크로 갯수만큼 입력 되지 않으면
이후 컴파일 작업을 수행하지 않고, 에러 메세지를 띄우고 싶습니다.
저는 그냥 매크로 걸러내는 IF 문에서 ELSE 문에 Echo 문으로 추가하면 될줄 알았는데,
Echo 문을 쓰니까 자꾸 에러가 나는거 같습니다.
간단하게 아래와 같이 작성했는데 , 무슨 문제라도 있는지 조언좀 부탁드립니다.
ifeq ($(MODE),D)
CFLAG=-g3
else ifeq ($(MODE),R)
CFLAG=-O
else
echo "[Error] Usage : make all MODE=D(R)"
endif
간단하게 MODE 에 "D" 나 "R" 이 입력되지 않을경우( D,R 외에 다른 문자가 입력되거나, 아예 입력되지 않을경우도..) else 문에
걸려서 에러를 띄우고 싶어서 위와같이 작성했는데 잘 되질 않네요.
게다가, 만약에 된다해도..에러도 띄우고 이후에 컴파일 작업도 진행될거 같은데..
원하는 매크로가 입력되지 않았을시 makefile 안에서 break 를 걸게 할수는 없을까요?
보통은 이런식으로
보통은 이런식으로 합니다.
대강 원리만 이해하시면 될 것 같아서 테스트해보진 않았습니다.
에러가 발생하는 이유는 타켓이 없이 echo 명령어가 존재하기 때문입니다.
위에 제가 예로 든 것처럼, 디폴트 타켓인 all을 정상적인 경우와 에러인 경우로 나누어서
처리하면 됩니다.
커널 소스의 Makefile을 분석해보시면 도움이 될 듯 합니다.
원하시는 것이 이것인지는 모르겠지만,
GNU make 에 이런 것이 있습니다 : GNU online documentation 에서 인용합니다 :-)
$(error
$(error function을 만나면 make는 거기서 실행을 중단... 했던 걸로 기억됩니다 ( '-');;;
댓글 달기