Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

G++로 여러 개의 .cpp 및 .h 파일 한 번에 컴파일하는 방법

C++ 프로젝트가 커지면 코드를 여러 파일로 나누어 관리하게 됩니다. 이때 헤더 파일(.h)과 소스 파일(.cpp)을 각각 따로 컴파일해야 한다면 번거로울 수 있습니다. 다행히 G++ 컴파일러를 사용하면 여러 파일을 한 번의 명령으로 함께 컴파일할 수 있습니다.

기본 문법

여러 개의 파일을 동시에 컴파일하려면 파일 이름들을 공백으로 구분하여 나열하면 됩니다. 예를 들어 file_name.hfile_name.cpp 같은 파일들을 한꺼번에 처리할 때 명령어 형식은 다음과 같습니다.

g++ abc.h xyz.cpp

컴파일이 정상적으로 완료되면 기본 실행 파일인 a.out이 생성됩니다. 아래 명령으로 프로그램을 실행할 수 있습니다.

./a.out

예제 1: 헤더 파일 작성

먼저 함수 오버로딩(function overloading)을 활용한 area.h 헤더 파일을 작성해 보겠습니다. 이 파일에는 원의 넓이를 계산하는 함수와 사각형의 넓이를 계산하는 함수가 매개변수 개수만 다르게 정의되어 있습니다.

float area(float r){
    return (3.1415*r*r); // 원의 넓이
}
float area(float l, float w){
    return (l * w); // 사각형의 넓이
}

같은 이름의 area 함수가 두 개 존재하지만, 인자의 개수가 다르기 때문에 C++의 함수 오버로딩 기능에 의해 호출 시 전달되는 인자에 따라 적절한 함수가 자동으로 선택됩니다.

예제 2: 메인 소스 파일 작성

다음으로 find_area.cpp 파일에서 위에서 만든 헤더 파일을 포함(include)하여 함수를 호출합니다.

#include <iostream>
#include "area.h"
using namespace std;
main(){
    cout << "반지름이 2.5인 원의 넓이는: " << area(2.5) << endl;
    cout << "가로 5, 세로 7인 사각형의 넓이는: " << area(5, 7) << endl;
}

주목할 점은 표준 라이브러리인 <iostream>은 꺾쇠 괄호(< >)로 포함하지만, 직접 작성한 "area.h"는 큰따옴표(" ")로 포함한다는 것입니다. 큰따옴표를 사용하면 컴파일러가 현재 디렉터리에서 먼저 해당 파일을 찾습니다.

컴파일 및 실행 결과

이제 두 파일을 한 번의 명령으로 컴파일하고 실행해 보겠습니다.

$ g++ area.h find_area.cpp
$ ./a.out
Area of circle with radius 2.5 is: 19.6344
Area of rectangle with length and width are 5 and 7 is: 35
$

실행 결과를 보면 반지름 2.5인 원의 넓이는 약 19.6344(3.1415 × 2.5 × 2.5)로 계산되었고, 가로 5, 세로 7인 사각형의 넓이는 35로 정확히 출력된 것을 확인할 수 있습니다.

정리

  • G++에서는 g++ 파일1 파일2 ... 형태로 여러 파일을 공백으로 구분하여 한 번에 컴파일할 수 있습니다.
  • 컴파일 결과로 생성되는 기본 실행 파일은 a.out이며, -o 옵션을 사용하면 실행 파일 이름을 지정할 수도 있습니다(예: g++ area.h find_area.cpp -o find_area).
  • 헤더 파일에는 함수 선언이나 정의를 두고, 필요한 소스 파일에서 #include로 불러와 재사용성을 높일 수 있습니다.

이처럼 G++를 활용하면 여러 파일로 구성된 C++ 프로젝트도 간단한 명령 하나로 손쉽게 빌드할 수 있습니다.