Linux에서 C++로 프로젝트를 하다보면 Makefile을 통해 빌드를 관리하게 된다.
흔히 Makefile에 필요한 파일을 모두 적어주곤 하는데 매번 다시 파일 이름을 적기란 귀찮다.
그래서 확장자를 기반으로 파일을 자동으로 인식해서 컴파일 할수 있도록 해보았다.
이 파일을 복사후 원하는 project폴더에 넣어 둔다.
make init
을 통해 project폴더의 구조를 자동으로 구축할수 있다. 동시에 src/main.cpp, test/test.cpp를 만들어 예제를 제공해준다.
make
를 통해 build할수 있으며 이때에는 release mode로 빌드 된다.
make test
는 test파일을 build 한후 자동으로 test를 실행하며 즉시 결과를 return 한다. 이 테스트는 gtest를 기준으로 작성되었으며 local machine에 gtest 라이브러리와 그 헤더가 필요로 한다. 일반 빌드를 할때에는 필요 없다.
make debug
는 debug용으로 build 한다.
make run
은 자동으로 빌드후 실행한다.
CPPFLAGS
와 TEST_FLAGS
는 각각 일반 빌드와 TEST빌드에 쓰이는 컴파일러 플레그이다. 이를 수정해서 추가 옵션을 컴파일러에 전달할 수 있다.
우선 이 Makefile은 다음과 같은 구조를 자동으로 구성한다.
이중 /src와 /test 디렉토리의 확장자가 .cpp인 파일들을 인식하여 컴파일 되게 된다1. /src는 소스 코드용, /test는 테스트 코드용 디렉토리이다.