g++로 컴파일할 때 헤더가 참조하는 .cc 파일들을 하나로 언급할 수 있을까요?
글쓴이: dltkddyd / 작성시간: 화, 2013/10/22 - 12:38오후
a.h, a.cc
b.h, b.cc
c.h, c.cc
파일이 있다고 할 때,
-a.cc-
#include "a.h"
//이하 생략~~~~~
-b.cc-
#include "b.h"
//이하 생략~~~~~
-c.cc-
#include "c.h"
//이하 생략~~~~~
위와 같이 헤더의 구현파일을 참조합니다. 그리고
-c.h-
#include "a.h"
#include "b.h"
이와 같이 c.h 파일이 다른 헤더를 포함합니다.
그리고 program.cc 파일을
-program.cc-
#include "c.h"
//이하 생략~~
하고 다음과 같이 컴파일을 해보았는데,
g++ -o program program.cc c.cc
컴파일이 제대로 이루어지지 않습니다. 물론 이렇게 하면
g++ -o program program.cc a.cc b.cc
라고 헤더가 참조해야할 파일들을 모두 언급하면 컴파일이 확실히 되지만, c.h 가 포함하고 있는 헤더파일이 한, 두 개가 아니라 100개 이상이 된다면, 위와 같은 방식으로 일일이 헤더의 참조파일을 언급하는 것은 번거롭고 비효율적입니다. 위에서 언급한 대로 다음과 같이 c.cc 파일을 언급하는 것으로 컴파일 할 수 있는 방법은 없나요?
g++ -o program program.cc c.cc
Forums:
의존관계를 Makefile로 표현해서 make로
의존관계를 Makefile로 표현해서 make로 해결할 문제인 것 같습니다
참고: Make 기반 빌드 시스템: 빌드 시스템(?) 그리고 Makefile 기초
그런건 불가능합니다. 해더파일과 소스파일은 1대1로
그런건 불가능합니다. 해더파일과 소스파일은 1대1로 대응되는 관계도 아니고 그 이름에도 아무런 규칙도 없으며, 또한 서로 다른 프로젝트끼리 참조하기도 합니다. chanik말씀대로 Makefile이나 CMake같은 빌드툴을 이용하시거나, IDE로 프로젝트를 관리하는 방법이 있겠습니다.
언급된 방법은.. 컴파일과 링크를 모두 수행하도록
언급된 방법은.. 컴파일과 링크를 모두 수행하도록 하는 명령입니다.
중간 결과물은 만들어 지지 않구요...
"구현"은 모두 h 파일에 있고, cc파일은 인클루드만 하는 상황인가요? 확인바랍니다.
안될 이유는 없어 보이는데요...
혹시 컴파일 에러가 아니라 링크에러 아닌가요?
(이 경우에는 a.cc와 b.cc에 구현코드가 있을것 같습니다.)
그리고 "헤더가 참조하는 cc파일"이 무엇인지 모르겠습니다.
예를 드신 코드에는 해당 경우가 없지 않나요?
댓글 달기