단단한돌 님이 쓰신 글 :
: 환경: C++ Builder XE5
:
: 보통은 LogThread.cpp / LogThread.h 파일이 Project Manager에서 트리 형태로 연결되어 표시가 되는데요..
: 이 프로젝트는 이상하게 그냥 같은 레벨에 그냥 보입니다.
:
: LogThread.cpp 파일을 클릭해서 열면 보통은 아래 탭에 LogThread.h 파일도 같이 열려서(연관된 파일)
: cpp 파일과 header 파일을 보면서 작업하는데..
:
: 이 프로젝트는 어찌된 일인 지 LogThread.cpp 을 열면 LogThread.cpp만 열립니다.
: LogThread.h 파일을 열려면 따로 또 클릭해서 열어야 하구요. 다른 탭으로 열립니다.
:
: Prooject 파일의 xml 파일을 강제로 수정하면,
: Dependency 관계가 형성되서 트리 형태로 보이기는 하는데..
: 파일을 여는 것은 마찬가지이고 cpp 파일만 열리고, Header 파일을 아예 열리지도 않네요.
:
:
...
:
: LogThread.h
: 17
:
: ...
:
: 이렇게 강제로 수정해도 마찬가지인데요..
:
: Header 파일의 내용은..
:
:
#include
: ...
: #ifndef __LogThreadH__
: #define __LogThreadH__
: ..
: class TLogThread : public TThread
: {
: ...
: };
: #endif
:
: CPP 파일 내용은 앞부분입니다.
:
:
: #pragma hdrstop
: #include "LogThread.h"
: ...
: #pragma package(smart_init)
:
: #ifndef __LogThread__
: #define __LogThread__
:
: TLogThread *LogThread;
:
: __fastcall TLogThread::TLogThread() : TThread(false)
: {
: // do something ..
: }
: #endif
:
: 어떻게 해야 여타의 파일처럼 cpp/header 파일을 나란히 볼 수가 있을까요?
:
답변:
엠바 애들이 IDE를 참 멍청하게 만들어 놨어요.
소스파일이 Unit4.cpp 이라고 하면...
헤더파일은
#ifndef Unit4H
#define Unit4H
....
#endif
와 같은 형태가 되어야 합니다.
단순하게 헤더파일이 저런 형태로 되어있는지만 파싱해서 처리하고 있는데
프로젝트가 커지게 되면 소스파일과 헤더파일 들을 별개의 서브 디렉토리로 나눠서 사용하는 게 일반적인 사용구성인데
그런 구성으로 디렉토리를 나누어 놓으면 엠바 애들이 IDE에 구현해 놓은 방식은, 이런 경우 의도한 대로 동작하지 않습니다.
차라리...
소스파일에서
#include "include/unit4.h"
#include 구문을 파싱해서 처리하도록 IDE를 구현해 놨다면 그런 부분 까지 커버가 됐을 텐데 말이죠.
프로젝트 제멀 파일에서
<DependentOn>include/Unit4.h</DependentOn>
위와 같이 헤더파일 디펜던시를 지정할 때, 서브디렉토리를 명시하더라도...
지금처럼 단순하게 헤더파일의 형태만 파싱해서 처리하는 방식은 무용지물이 됍니다.
소스파일에서 #include 구문을 파싱해서 처리하도록 IDE를 구현해 놓았으면...
서브 디렉토리 까지 커버할 수 있었을 텐데 말이죠.