부산IT학원/스마트컨트롤러

20140520 (make, makefile 실습)

EHOzlO 2014. 5. 20. 14:10

64일차








----------------------

make, makefile

----------------------




--- makefile


ATMega128 makefile 처럼 흉내 내보기.


소스


         : 변수

         : 라벨

         : 화면에 출력 안함



      CC=gcc

      CFLAGS=--save-temps -DNUM=50

      TARGET=main

      MSG_BEGIN=---------- begin ----------

      MSG_END=----------- end -----------

     

      run: rebuild

          @echo

          @./$(TARGET)

     

      rebuild: clean build

     

      build: begin smart end

     

      smart:

          $(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c

     

      begin:

          @echo

          @echo $(MSG_BEGIN)

          @echo

          @echo

     

      end:

          @echo

          @echo

          @echo $(MSG_END)

          @echo

     

      clean:

          rm -rf $(TARGET)

          rm -rf $(TARGET).i

          rm -rf $(TARGET).o

          rm -rf $(TARGET).s

     





명령 줄에서 make 만 쳤을 시 처음 나오는 라벨이 실행되므로

run이 먼저 실행된다.


먼저 소스파일만 있을 경우



make.


빨강줄이 가리키는 파일들이 생긴걸 볼 수 있다.






make clean



컴파일된 파일들이 삭제되는 것을 볼 수 있다.





makefile을 이용하면 컴파일시 여러 옵션, 파일 삭제등등

좀더 쉽고 편하게 컴파일을 할 수 있다.











--- 라벨 오른쪽에 라벨이 아니면?


run: main.exe

@.\main.exe

@rm -f main.exe


라벨 다음에 라벨이 오지 않으면 그 이름에 해당하는 파일이 있는지 확인하고

없으면 라벨을 실행시키지 않고 그 파일이 존재하면 아래 코드를 실행한다.



예제)