[C++] Make로 g++ 병렬 컴파일하기
카테고리: C++
문제 상황
C/C++로 프로그래밍 한 결과를 실행하기 위해서는 gcc나 g++를 통해 컴파일해야한다. 하지만 소스코드의 길이가 짧거나 단순한 경우에는 아래와 같이 실행해도 컴파일하는데 시간이 오래걸리지 않지만, 일반적으로 방대한 프로젝트를 진행하는 경우에는 MakeFile
을 사용하여 컴파일과 링킹을 진행하는데 컴파일하는데만 10분이 넘게 걸리는 경우도 많다.
gcc -o "filename" filename.cpp
g++ -c filename.cc
문제 해결
알기론 매우 오래전 GNU Make 버전부터 병렬 컴파일 옵션인 make -j
를 지원하고 있었다. 보통 -j
뒤에는 사용하는 시스템의 CPU 논리 프로세서의 값만큼 프로그래머가 할당해야 하는데, 리눅스 환경에서는 범용성을 위해 아래의 코드로 더 많이 사용한다.
make -j$(nproc)
추가로, 병렬 컴파일을 하면 여러 소스코드를 동시에 빌드하므로 출력 결과가 뒤죽박죽되어 알아보기 힘들 수 있다. 물론 이것도 --output-sync=target
를 통해 출력을 동기화하여 가독성을 개선할 수 있다.
make -j$(nproc) --output-sync=target