BEER&DEV

[Linux] 리눅스의 make 와 프로젝트의 makefile 본문

생활/개발일지

[Linux] 리눅스의 make 와 프로젝트의 makefile

사당맥주 2024. 4. 11. 14:36
반응형

리눅스에서의 make 명령어 이해하기

make 명령어는 주로 대규모 및 복잡한 소프트웨어 프로젝트에서 사용되며, 소스 코드를 컴파일하고 실행 파일을 생성하는 등의 작업을 자동화하는 데 유용합니다. make를 사용하면 프로젝트의 빌드 프로세스를 효율적으로 관리할 수 있습니다.

Makefile 작성

make를 사용하기 위해서는 프로젝트 디렉토리에 Makefile이라는 파일이 필요합니다. Makefile은 make가 실행할 명령어들을 정의하는 텍스트 파일입니다. Makefile은 다양한 블록들로 구성되며, 각 블록은 타겟(Target)과 해당 타겟을 실행하기 위한 명령어들로 이루어집니다.

예를 들어, 다음은 간단한 Makefile의 예시입니다.

all: hello

hello:
    gcc -o hello hello.c

위의 Makefile은 "hello"라는 실행 파일을 만드는데, 이를 위해 gcc 컴파일러를 사용합니다. all 타겟은 hello 타겟을 의존하고 있습니다. 따라서 make all을 실행하면 hello 타겟을 실행하여 실행 파일을 생성합니다.

make 명령어 실행

make를 실행할 때는 다음과 같은 방식으로 실행합니다.

make [타겟]

여기서 [타겟]은 Makefile에 정의된 타겟의 이름입니다. 예를 들어, 위의 예시에서는 다음과 같이 실행할 수 있습니다.

make hello

이 명령어를 실행하면 hello 타겟이 실행되어 실행 파일이 생성됩니다.

변수 사용

Makefile에서는 변수를 사용하여 코드를 더 유연하게 만들 수 있습니다. 변수는 다음과 같이 정의합니다.

CC=gcc

위의 예시에서는 CC라는 변수를 정의하고, 그 값으로 gcc를 할당하였습니다. 이후에는 ${CC}와 같이 변수를 사용하여 명령어를 작성할 수 있습니다.

의존성 관리

Makefile에서는 타겟들 간의 의존성을 관리할 수 있습니다. 예를 들어, 만약 어떤 파일이 변경되었을 때 해당 파일에 의존하는 다른 파일들도 함께 업데이트되어야 한다면, Makefile에서 이러한 의존 관계를 명시할 수 있습니다.

all: main.o helper.o
    gcc -o program main.o helper.o

main.o: main.c
    gcc -c main.c

helper.o: helper.c
    gcc -c helper.c

위의 예시에서는 all 타겟이 main.ohelper.o에 의존하고 있습니다. 따라서 all 타겟을 실행하면 main.ohelper.o를 먼저 생성한 뒤, 이를 이용하여 program 실행 파일을 생성합니다.

이와 같이 make를 사용하면 복잡한 빌드 프로세스를 효율적으로 관리할 수 있습니다. make는 프로젝트의 빌드, 테스트, 배포 등 다양한 작업에 유용하게 활용될 수 있습니다.

반응형

'생활 > 개발일지' 카테고리의 다른 글

AWS에서 Python + Celery + Flower + venv 환경 설정하기  (0) 2024.04.11