728x90
300x250
[C++] G++로 다수 Header와 Cpp파일 처리하기(Linux)

 

Main.cpp

A.h

A.cpp(또는 inl)

B.h

B.cpp(또는 inl)

C.h

C.cpp(또는 inl)

 

이런 식으로 다수의 파일을 목적프로그램(Object)으로 출력해야합니다.

Header의 경우 컴파일하게 되면, Gch파일로 압축 컴파일됩니다.

크게 걱정하실 필요는 없으며, Main.cpp과 다수의 Cpp의 Object파일을 중점으로 컴파일하면, 이상 없이 처리됩니다.

 

다소 번거롭고 짜증 나지만, 각각의 절차를 MakeFile의 형태로 만들지 않은 이상 수작업으로 진행하셔야 합니다.

 

G++ -c Main.cpp

G++ -c A.h A.cpp

G++ -c B.h B.cpp

G++ -c C.h C.cpp

 

G++ -o Main.o A.o B.o C.o

 

만약 C의 파일이 C.cpp가 아니고 C_inc.h나 inl일 때

Gch로 파일이 생성되면 cpp파일 묶음들만 컴파일하시면 됩니다.

 

G++ -o Main.o A.o B.o
반응형
728x90
300x250
[C++] C++ Template Class 헤더 분리

 

Template Class를 헤더로 분리하는 방법은. inl 파일로 분리해서 하는 방법이 있다.
대형 3D엔진에서는. inl이란 파일 형식으로 CPP 파일 대신해서 사용한다.
사실 템플릿 함수 자체가 함수를 만들어내는 임무를 수행하고 있다.

 

일반 함수 원형의 경우,

int hama(int a, int b)

{

       a + b

}

 

이런 꼴이라고 가정하면

템플릿 자료형(int, char 등..) hama(템플릿 자료형 a, 템플릿 자료형 b)

{

     a + b;

}

 

이런 식으로 함수 원형 틀은 그대로 두되 자료형을 자유롭게 바꿔낼 수 있다.

Header라는 영역에서밖에 못 사용하는 것도 아무래도 이러한 이유가 있기 때문에 그러지 않을까 생각한다.

결론은 분리하는 방법은 편법답게 하는 방법이 있는데,
첫 번째로, header를 header 1, header 2로 분리하는 방법

 

헤더 1이에요

class 헤더1{

 

}

 

#include "헤더1.h"

 


두 번째로, header를 inl으로 맨 하단에 #include를 시키는 방법이 될 수 있다.

 

나 헤더

 

class 멍청한클래스{

 

}

 

#include "aaa.inl"

 

/// aaa.inl

구현 하시죠.ㅋㅋㅋ

 

그냥 실험하는 목적이거나 단순한 거면, 헤더 파일 하나에 몰아넣는 게 정신건강에 이롭지 않나 생각한다.

반응형

+ Recent posts