[c++] g++ 직접 컴파일 VS CMake 사용

About_work·2024년 10월 19일
0

c++

목록 보기
15/17
  • 두 방법 모두 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를 익히는 것이 유리할 거야.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글