728x90
Build
- BUILD는 보통 소프트웨어를 빌드하는 데 사용되는 일반적인 용어
- 특정한 빌드 시스템을 가리키는 것은 아니며, 빌드 과정 전체를 일반적으로 나타낸다.
- 빌드 시스템의 종류나 구현 방법에 대한 구체적인 정보를 제공하지 않는다.
- 대신 소프트웨어를 빌드하는 데 필요한 도구나 방법을 포함할 수 있다.
Make
- MAKE는 GNU 프로젝트의 일환으로 개발된 빌드 자동화 도구
- 주로 C 및 C++ 프로그램을 빌드하는 데 사용
- MAKE는 Makefile이라는 텍스트 파일을 사용하여 빌드 프로세스를 정의
- Makefile은 소스 코드 파일과 해당 파일을 컴파일하는 데 필요한 규칙 및 종속성을 포함
- MAKE는 각 소스 파일의 변경 사항을 검사하고 필요한 경우 해당 파일을 다시 컴파일하여 빌드를 업데이트
- MAKE의 단점 중 하나는 Makefile의 작성이 복잡할 수 있다는 것
(특히 큰 프로젝트의 경우 Makefile을 유지 관리하는 것이 어려울 수 있다.)
구조
Makefile
Makefile을 사용하는 이유는 위와 같은 복잡한 과정을 생략할 수 있다.
하지만, Makefile이 제공하는 강력한 기능 중 하나인 Incremental build 를 사용하기 위해서다.
Incremaental build 란?
반복적인 빌드 과정에서 변경된 소스코드에
의존성(Dependency) 이 있는 대상들만 추려서 다시 빌드하는 기능
예를 들어, 위의 빌드 예제에서 main.c의 한 줄만 바꾸고 다시 빌드를 할 때,
main.o 컴파일(gcc -c -o main.o main.c)과 app.out링크(gcc -o a.out main.o a.o b.o)만 수행하는 경우가 이에 해당
Cmake
- CMAKE는 크로스 플랫폼 빌드 자동화 도구로, 프로젝트의 빌드 프로세스를 설정하는 데 사용
- MAKE와 비슷하지만 좀 더 추상화된 레벨에서 동작
- CMAKE는 각 플랫폼에 대한 Makefile을 생성하는 데 사용
- 이러한 Makefile은 MAKE를 사용하여 실제 소프트웨어를 빌드하는 데 사용 됨
- CMAKE는 보다 사용자 친화적이며 간단한 구조를 가지고 있어서 MAKE보다 쉽게 사용할 수 있다.
- 또한 다양한 개발 환경에서 동일한 CMakeLists.txt 파일을 사용하여 소프트웨어를 빌드할 수 있다.
- CMAKE는 크로스 플랫폼 빌드를 지원하며 다양한 컴파일러와 빌드 도구를 지원
- 이는 MAKE가 주로 Unix 및 유닉스 계열 시스템에서 사용되는 반면
CMAKE는 Windows 및 macOS와 같은 다른 플랫폼에서도 사용될 수 있다는 것을 의미
요약하면,
MAKE :: 빌드 프로세스를 관리하는 데 사용되는 구체적인 빌드 도구
CMAKE :: MAKE를 위한 구성 파일을 생성하는 도구로, 더 사용자 친화적이며 크로스 플랫폼 빌드를 지원
BUILD :: 단순히 소프트웨어를 빌드하는 데 사용되는 일반적인 용어
728x90