본문 바로가기
컴퓨터 활용(한글, 오피스 등)/기타

"cmake .. make -j$(nproc)"의 의미?

by 3604 2026. 8. 11.
728x90

 

cmake .. make -j$(nproc) C/C++ 프로젝트를 빌드할 가장 흔하게 함께 사용되는 2단계 연속 명령어입니다.

간단히 말해 1단계: 빌드 환경 설정(설계도 생성) 거쳐 2단계: 실제 파일 컴파일(건물 지어가기) 수행하는 과정입니다.

1. 단계별 상세 의미

1단계: cmake .. (빌드 준비 설계도 생성)

·        cmake: 소스 코드를 직접 컴파일하는 도구가 아니라, 컴퓨터 환경(OS, 컴파일러 버전, 라이브러리 위치 ) 확인하고 Makefile이라는 실제 빌드용 파일(설계도) 만드는 도구입니다.

·        ..: 바로 상위 디렉터리(Parent Directory) 가리킵니다.

o   보통 소스 코드 폴더 안에 build라는 깔끔한 임시 폴더를 만들어 들어간 실행합니다.

o   따라서 cmake .. "상위 폴더에 있는 CMakeLists.txt 파일(설계 기본 규칙) 읽어서, 현재 위치(build 폴더) Makefile 생성해라"라는 뜻입니다.

2단계: make -j$(nproc) (실제 컴파일 수행)

·        make: 1단계에서 생성된 Makefile 읽어서 소스 코드를 실제로 컴파일하고 실행 파일(.exe, binary) 만드는 도구입니다.

·        -j$(nproc): CPU 모든 코어를 동원해 병렬로 빠르게 컴파일하라는 옵션입니다.

o   -j: 여러 컴파일 작업을 동시에 실행(Parallel Jobs)

o   `$(nproc)``: 현재 컴퓨터의 CPU 코어(스레드) 개수를 자동으로 계산하여 대입

💡 명령어를 나누어 쓰는 이유 (Out-of-source Build)

소스 코드가 있는 본래 폴더에서 바로 빌드하면 컴파일 과정에서 생기는 수많은 임시 파일(.o, .d ) 소스 코드와 섞여 지저분해집니다.

이를 방지하기 위해 개발자들은 보통 아래와 같은 구조로 작업합니다.

Bash

mkdir build    # 1. 빌드 전용 빈 폴더 생성
cd build       # 2. 빌드 폴더로 이동
cmake ..       # 3. 상위 폴더(..)의 소스를 바탕으로 현재 폴더에 Makefile 생성
make -j$(nproc) # 4. 현재 폴더에서 병렬 컴파일 실행

 

728x90