|
최우택 님이 쓰신 글 :
:
: 기본적으로 C++빌더에서 컴파일하면 이런저런 모듈로 쪼개지쟎습니까?
: 프로젝트 메뉴에서 Usd Dynamic RTL을 선택과 Build with runtime packages선택과 연관되어서 말입니다. 근데 이들 옵션을 조정해서 실행화일의 사이즈를 작게 한 다음 어떤 화일들을 같이 배포해야 하는지 알 수가 없군요. 화일들이 한두개도 아니고....
:
: 실행화일과 함께 어떤 화일을 같이 배포해야 하는 지 가르쳐주세요.
임펠리테리입니다.
알고 계신대로, 빌더 어플리케이션을 만들 때 말씀하신 두가지 프로젝트 옵션에 따라 런타임 패키지와 런타임 dll들을 별도로 하고 자체 프로그램의 크기를 최소화할 수 있습니다. 구체적으로는 다음과 같습니다.
먼저 런타임 dll. 패키지가 아닌 dll로서 호출되는 것은 CP3250MT.DLL, CW3250MT.DLL, CW3250.DLL 세가지입니다. 작성한 어플리케이션이 dll일 경우 Borlndmm.dll이 필요할 수도 있습니다.
런타임 패키지는, 이 옵션을 선택하는 프로젝트 옵션 다이얼로그를 자세히 보시면 그 체크박스 바로 아래쪽에 현재 어플리케이션에 함께 포함하지 않고 외부 패키지파일을 사용할 것들을 지정할 수 있게 되어있습니다. 디폴트로는 시스템에 설치된 모든 런타임 패키지 이름들이 다 포함되어 있습니다. 다시 말해, 이 상태에서 런타임패키지 옵션 체크박스를 체크한 상태로 두고 컴파일하면 모든 패키지가 다 필요한 상태가 됩니다. (서드파티 패키지들도 모두 포함해서 말이죠.)
만약 모든 패키지들을 다 배포하는 것이 번거롭거나, 너무! 크기가 크다고 판단되면, 실제로는 호출되지 않거나 덜 사용되는 패키지들을 제외할 수 있습니다.
예를 들어, 어플리케이션에서 DB를 사용하지 않는다면 VCLBDE50, Vcldb50, vcldbx50, vclado50 네개의 패키지를 포함하나 안하나 실행파일 크기는 전혀 변하지 않으며, 런타임 패키지를 별도로 배포할 경우에도 이 패키지를 전혀 호출하지 않으므로 요넘은 배포할 필요가 없습니다.
또 DB를 사용하더라도 BDE나 ADO 두가지 중 한가지 방법만을 사용한다면(대부분 그렇겠죠) 사용하지 않는 쪽은 필요가 없지요.
이와 같이, 티차트, 퀵리포트, 인터베이스, 디시전큐브, 웹브라우저컨트롤 등등도 실제로는 어플리케이션에서 자주 쓰이지 않으므로 이것들을 함께 배포할 경우가 드물죠.
만약 배포 전략을, 패키지를 별도로 배포한다는 쪽으로 결정했다면, 적어도 반드시 vcl50과 vclx50 두개의 패키지는 반드시 별도로 배포하도록 하는 것이 좋습니다. 모든 빌더/델파이 어플리케이션은 이 두가지 런타임 패키지에 대한 의존도가 대단히 높을 뿐 아니라, 패키지 자체의 파일 사이즈도 아주 큽니다. 그리고 디비를 사용할 경우 해당 디비 관련 패키지도 따로 빼는 것이 좋겠구요.
그런데 만약, 실제로는 겨우 한두개의 함수 밖에 호출되지 않는 패키지라면 굳이 따로 배포하는 것이 별로 의미가 없겠지요? 그래서, 좀더 합리적인 전략을 짜려면, 실제로 작성한 어플리케이션이 어떤 패키지에 어느정도의 의존도를 가지는지 구체적으로 분석하는 것이 좋은데, 이것은 dll의존도 분석 프로그램을 사용하면 완벽하게 잡아낼 수 있습니다.
그럼 참고하시길...
|