- 두 방법 모두 C++ 프로그램을 컴파일하고 실행 파일을 생성하는 과정이지만, 각자의 목적과 사용 시나리오가 다릅니다.
1. g++ 명령어로 직접 컴파일하기
g++ helloworld.cpp -o helloworld
특징
- 단순하고 빠르게 컴파일할 수 있음.
- 소규모 프로젝트나 단일 파일 컴파일에 적합.
- 의존성 관리나 복잡한 설정이 필요 없을 때 사용.
장점
- 빠르고 간단함: 터미널에서 한 줄 명령어로 실행 파일을 생성.
- 의존성 관리 불필요: 추가 설정 파일 없이 간단한 프로그램에 적합.
- 학습 비용이 낮음: C++ 초보자도 쉽게 접근 가능.
단점
- 복잡한 프로젝트에 부적합: 다수의 소스 파일을 관리하거나 외부 라이브러리와 함께 빌드하기 어려움.
- 매번 옵션을 수동으로 설정해야 함: 디버그, 최적화, 경로 관리 등을 직접 입력해야 함.
2. CMake를 사용하여 빌드하기
cmake ..
make
특징
- CMake는 빌드 자동화 도구로, 프로젝트의 빌드 설정을 관리하는 데 사용됨.
- 소스 파일과 의존성을 쉽게 관리할 수 있으며, 플랫폼 간 이식성을 높임.
CMakeLists.txt
라는 설정 파일에 빌드 설정을 정의함.
장점
- 대규모 프로젝트 관리에 유리: 여러 파일과 라이브러리를 포함하는 프로젝트를 효율적으로 빌드 가능.
- 의존성 관리와 모듈화: 라이브러리 경로와 의존성을 쉽게 관리할 수 있음.
- 플랫폼 독립적: Windows, macOS, Linux 등 다양한 환경에서 동일한 설정으로 빌드 가능.
- 디버깅과 최적화 옵션 관리 용이: 빌드 타입(
Debug
, Release
)을 쉽게 설정할 수 있음.
단점
- 초기 설정이 복잡함:
CMakeLists.txt
파일을 작성해야 함.
- 단순한 프로젝트에 불필요한 오버헤드: 작은 프로그램에 비해 설정이 과할 수 있음.
- CMake 설치 필요: 추가적인 학습과 설치가 필요함.
사용 사례 비교
항목 | g++ 직접 컴파일 | CMake 사용 |
---|
프로젝트 규모 | 단일 파일 또는 소규모 프로젝트 | 다중 파일 및 대규모 프로젝트 |
의존성 관리 | 수동으로 경로 지정 | 자동으로 라이브러리와 경로 관리 |
빌드 시스템 | 특정 플랫폼에 종속적 | 플랫폼 독립적 (Windows, macOS, Linux 등) |
디버깅 및 최적화 | 매번 수동으로 옵션 설정 | CMakeLists.txt 에서 쉽게 설정 가능 |
설정 난이도 | 낮음 | 중간~높음 |
정리
- 소규모 프로젝트: 단일 또는 몇 개의 파일만 필요하다면
g++
명령어로 직접 컴파일하는 것이 간단하고 효율적이야.
- 대규모 프로젝트: 여러 파일과 라이브러리, 플랫폼 간 호환성이 필요하다면 CMake를 사용하는 것이 더 적합해.
만약 장기적으로 확장 가능하고 유지 보수하기 쉬운 프로젝트를 계획하고 있다면 CMake를 익히는 것이 유리할 거야.