Cmake,Makefile 개념잡기

최현진·2023년 1월 2일
0

ㅇMpeon

목록 보기
2/9

Makefile

정의

프로그램 개발시, 프로젝트가 거대해지고 코드가 길어지게 되면 하나하나의 수정파일을 즉시 반영하고 빌드하기가 매우 번거로워 지는데, makefile을 이용해서 빌드시에 불편함을 줄일수가 있다.

makefile의 주 구성요소로는 목표가 되는 변수명을 지정하는 target, 동작을 명시하는 command, target옆에 작성하며 target에 대한 전제조건을 명시하는 prerequisite(전제조건) 작동원리나 그 조건에 대해서 서술하는 principle(작동원리) 가있다.

makefile도 작성하는 순서가 존재하며, 재귀적으로 적어주어야 원활하게 빌드가 완료되지만, 여러 명령어를 통해 순서에 구애받지 않고 작성할수있게끔 할수는 있다.

매크로를 통해 좀더 쉽고 가볍게 makefile을 작성할수도 있으며, 그를 통해 makefile을 작성할 경우에는 사전에 명시해야할 조건들에 부합되는 환경이 구축되어야 한다(컴파일러,오브젝트가 되는 파일들, 타겟명시 등)

이외의 여러 명령어를 통해 한번에 빌드파일을 삭제 후 원상복구 시키는등의 여러 작업이 가능하다

Cmake

정의

Cmake란 여러 상황(멀티플랫폼)에서 동일하게 빌드파일을 생성해주는 툴로, 빌드관리 시스템인 makefile을 생성,관리하기 위해서 사용하는 오픈소스 툴이다.

주 내용은 어떠한 요소들로 구성되어 어떤식으로 빌드할지에 대한 명시를 하거나, 구성요소가 되는 라이브러리 혹은 디렉토리들을 지정해주어 빌드시에 문제가 없도록 사전에 지정해줄수 있다.

쉽게 말하자면 makefile을 일일이 작성하여, 구성요소가 되는 디렉토리나 라이브러리등을 지정하는 수고를 덜어주며 여러 환경에서 빌드가 가능하게끔 해주는 툴이라고 할수있다.

추가적으로 makefile을 유지보수하면서 프로젝트의 규모가 커지게되면, 각 헤더파일이나 실행파일등의 의존성이 꼬이게 되면서 빌드시에 문제가 발생할수도있는데, cmake는 이것을 하나의 규칙을 지정한 txt파일로 makefile의 이런 부분또한 보완해줄수있다

정리

makefile

여러 상황에서도 동일한 빌드를 위해서 이용하는 빌드툴로 여러가지 사전조건들을 명시해준채 순서대로 작성을 해나가야 하지만 여러 명령어를 통해 매크로를 이용, 순서를 무시하거나 길이를 줄이는 등의 작업은 가능하다.
하지만 어느정도 복잡하거나 거대한 프로젝트를 진행할때에는 cmake의 도움을 받는것이 조금더 편리할수 있다

cmake

makefile을 유지보수,관리할수있는 오픈소스 툴로써 복잡하고 사용하기 어려운 makefile과 다르게 몇가지만의 명령어 만으로도 makefile을 만들어낼수있고, 이를 토대로 실제 빌드가 진행될수있다 또한 makefile을 통해 개발하다가도 발생할수있는 의존성 문제들에서 어느정도 자유로우며, makefile의 의존성 문제가 꼬이는것을 막아줄수있다
쉽게말해서 makefile은 빌드를 관리해준다하면 cmake는 빌드를 관리하는 makefile을 관리해주는 툴이라고 할수있다.

profile
Lorem ipsum dolor sit amet

0개의 댓글