C++ 프로젝트가 커지면 코드를 여러 개의 소스 파일로 나누어 관리하는 것이 일반적입니다. 이 글에서는 여러 개의 .cpp 파일을 한 번에 컴파일하여 하나의 실행 파일로 만드는 방법을 알아보겠습니다. 방법은 매우 간단합니다. g++ 컴파일러에 파일 이름들을 목록 형태로 전달하기만 하면 됩니다.
기본 컴파일 문법
예를 들어 abc.cpp와 xyz.cpp 두 파일을 동시에 컴파일하려면 다음과 같은 명령어를 사용합니다.
g++ abc.cpp xyz.cpp
컴파일이 완료되면 기본적으로 a.out이라는 실행 파일이 생성되며, 다음 명령어로 프로그램을 실행할 수 있습니다.
./a.out
실전 예제
area.cpp — 함수 정의 파일
먼저 원의 넓이와 사각형의 넓이를 계산하는 두 개의 오버로딩된 함수를 담은 파일입니다.
float area(float r){
return (3.1415*r*r); // 원의 넓이
}
float area(float l, float w) {
return (l * w); // 사각형의 넓이
}find_area.cpp — 메인 프로그램 파일
다음으로 위의 함수를 호출하여 결과를 출력하는 메인 파일입니다.
#include <iostream>
#include "area.cpp"
using namespace std;
main() {
cout << "반지름 2.5인 원의 넓이: " << area(2.5) << endl;
cout << "가로 5, 세로 7인 사각형의 넓이: " << area(5, 7) << endl;
}컴파일 및 실행 결과
두 파일을 함께 컴파일하고 실행하면 아래와 같은 출력을 확인할 수 있습니다.
$ g++ area.cpp 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 $
참고 사항
위 예제에서는 설명을 위해 #include "area.cpp"처럼 소스 파일을 직접 포함했지만, 실제 프로젝트에서는 이 방식보다 헤더 파일(.h)에 함수 선언을 작성하고 소스 파일(.cpp)에 구현을 분리한 뒤, 컴파일 시 모든 .cpp 파일을 함께 전달하는 것이 권장됩니다. 또한 -o 옵션을 사용하면 실행 파일의 이름을 원하는 대로 지정할 수 있습니다.
g++ abc.cpp xyz.cpp -o myprogram
이렇게 하면 a.out 대신 myprogram이라는 이름의 실행 파일이 생성됩니다.