yebeen.kim

Make utility / makefile 본문

24학년도 1학기/git

Make utility / makefile

yebeen.kim 2024. 3. 18. 20:19

무엇인가

  • 소프트웨어 개발을 위해 UNIX 계열 운영 체제에서 주로 사용되는 프로그램 빌드 도구
  • makefile 을 실행함
  • 장점 : 파일에 대한 반복적 명령을 자동화하여 시간을 절약할 수 있음, 단순반복작업 최소화

만드는 과정

  • .c 파일을 목적파일 .o 로 컴파일 후 여러개의 목적파일(라이브러리)과 main함수를 합쳐 하나의 실행파일을 만든다
    • header file을 만들고 c file 을 만들고 compile & build 한후 실행파일을 만들어 Run 
gcc -c menu.c //menu.o 생성
gcc -c guest.c -o guest1.o //guest1.o 생성
gcc main.c guest1.o menu.o -o shop //shop.exe 실행파일 생성
./shop //Run

Makefile 용어

  • Target : 명령어가 실행되었을 때 결과로 나오는 파일명
    • 결과 파일이 있을 때 : target / 결과 파일이 없을 때 : dummy target
  • Dependency : 실행 파일을 만들어낼때 필요한 파일
    • dependency 파일이 언제 수정되었는지 체크하는게 중요하다
    • 이 파일이 수정되었다면 실행 파일을 다시 만들어야하기 때문이다
  • Command : 실행할 코드
  • Macro : 코드 단순화
target1 : dependency1 dependency2 ...
	command1
    	command2

실습 코드

//main.c
#include "menu.h"
#include "guest.h"
#include "stdio.h"

int main(){
    int menu;
    displayMenu();
    menu = addGuest();
    displayGuest(menu);
    return 0;
}
//menu.c
#include "stdio.h"
#include "menu.h"

void displayMenu(){
    printf("-------------------------\n");
    printf("1. Pizza : 20000 \n");
    printf("2. Spaghetti: 12000 \n");
    printf("3. Salad : 7000 \n");
    printf("-------------------------\n");
}
//guest.c
#include "guest.h"
#include "stdio.h"

int addGuest(){
    int menu;
    printf("원하는 메뉴는? ");
    scanf("%d", &menu);
    return menu;
}

void displayGuest(int menu){
    if(menu == 1){
        printf("책피자 나왔습니다");
    }else if(menu == 2){
        printf("습하게띠 나왔습니다");
    }else if(menu == 3){
        printf("샐러드 나왔습니다");
    }else{
        printf("그런 메뉴 없습니다~!");
    }
    printf("\n");
}

makefile

 

maek 실행하기 전과 후 파일의 개수 차이

 

makefile을 만들고 명령어를 쓰면 gcc 명령어를 직접 쓰지않아도 된다

'24학년도 1학기 > git' 카테고리의 다른 글

[ git ] 깃, 깃허브 초기 설정  (0) 2024.03.26