이 팁은 담비님(천리안 FREKBS)님이 99년 1월 3일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.
-----------------------------------------------------------------------
안녕하세요! 담비입니다.
본 문서는 IDETOBPR.EXE의 Option을 정리한 내용입니다. Borland C++ (version
4.x, 5.x) 에서 작성된 프로젝트를 C++ Builder용 프로젝트 화일로 변환시켜줍니다.
본 문서는 C++ Builder와 함께 제공되어지는 도움말 파일을 기초로 작성되었으며
내용상의 오류 혹은 추가 및 변경되어져야 할 사항을 발견하시면 메일 주시면
감사하겠습니다. 보내주신 내용은 검토 후 반영하여 다시 올리도록 하겠습니다.
frekbs@chollian.net
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IDETOBPR 유틸리티는 Borland C++(versions 4 and 5)용 프로젝트 파일인 .IDE를
C++Builder용 프로젝트 파일 .BPR로 변환시킨다. 명령라인 문법은 다음과 같다.
idetobpr [-v] filename.ide
VCL을 포함하지 않는 응용프로그램은 RTL, OWL, BIDS 라이브러리의 VCL을 사용하지
않은 버젼에 링크를 지시하여 .BPR파일을 생성하도록 -v 옵션을 사용한다.
VCL과 MFC 헤더파일은 호환성이 없기 때문에 MFC 프로젝트에는 자동적으로 -v옵션이
설정된다.
IDETOBPR은 다음의 절차에 따라 메이크파일을 생성한다.
.IDE 파일에 있는 각각의 타겟을 위해 생성되어진 .BPR 파일로 구분된다. 만일
.IDE 파일에 여러게의 타겟들이 존재한다면 IDETOBPR은 각 .BPR 파일을 호출하는
.BPG(group) 파일을 생성한다. 만일 타겟이 EXE, DLL, ststic LIB가 아니라면
배치파일 타겟이 생성되어지고 생성되어진 .BPG 파일에 추가될것이다.
IDETOBPR는 .IDE 파일과 동일한 이름의 .CPP 파일을 찾는다. 그것은 프로젝트의
노드에 의존하여 표시하는 C++ Builder의 Project Manager에서 표시가 가능하도록
.CPP 파일에 다음의 줄들을 추가한다.(.CPP 파일은 주요한 부분을 수정한 후 백업
되어진다.)
#include <condefs.h>
USEUNIT("dependent .CPP filename")
USEUNIT("dependent .CPP filename")
: // one for eached linked OBJ file
USERC("dependent .RC filename")
USERC("dependent .RC filename")
: // one for each RC file
#define WinMain
//for DLL targets, this is changed to '#define DllEntryPoint'
IDETOBPR가 .IDE파일과 동일한 이름의 .CPP파일을 찾을수 없다면 파일을 하나
생성한다. 생성된 .CPP 파일은 프로젝트의 노드들에 의존하여 표시하는 C++ Builder
Project Manager에 의해서만 사용되어진다. 만일 .IDE 파일과 동일한 이름의 .C
파일이 존재한다면 그 파일은 그대로 보존되며, 여전히 타겟을 생성하기위해
사용되어진다.
기본적인 프로젝트의 옵션들은 .BPR 파일에 복사되지 않는다. 이 옵션들은 C++
Builder에서 프로젝트가 오픈되어진 경우에 직접 추가되어질 수 있다.
인클루드, 라이브러리 패스 그리고 디파인 된것들 중 환경 변수들은 확장되어
참조한다. 이것은 BCROOT 환경변수를 위해서 특히 중요하다. 만일 BCROOT가
환경변수에 존재하지 않는다면 잘못된 메이크파일이 생성되어진다. 이경우
IDETOBPR은 경고를 발생한다. $env(BCROOT) 또는 라이브러리 패스와 인클루드에
포함된 BC5는 $(BCB)로 변경되어진다. OWL과 BIDS 프로젝트를 위해서는 패스에
include\obsolete가 추가되어진다.
C++ Builder는 개개의 파일들이 가지는 옵션을 다루지는 못한다. 만일 IDETOBPR이
.IDE 파일의 노드들에 오버라이드(override)된 지역 옵션을 찾는다면 지역 옵션들을
무시하고 경고가 발생한다. .IDE 파일에 있는 소스의 집합들은 무너지게 된다.
적어도 명령라인에 -v 옵션을 포함하거나 MFC 프로젝트를 변환한다면 라이브러리
이름들은 다음처럼 변경되어진다.
──────────────────────────────────────
Source (.IDE) Description Target (.BPR)
──────────────────────────────────────
owlwf OWL static owlwv
owlwfi OWL dynamic owlwvi
owlwt OWL multithreaded static owlwv
owlwti OWL multithreaded dynamic owlwvi
owldwf OWL static diagnostic owldwv
owldwfi OWL dynamic diagnostic owldwvi
owldwt OWL multithreaded static diag owldwv
owldwti OWL multithreaded dynamic diag owldwvi
bidsf BIDS static bidsv
bidsfi BIDS dynamic bidsvi
bidst BIDS multithreaded static bidsv
bidsti BIDS multithreaded dynamic bidsvi
bidsdf BIDS static diagnostic bidsdv
bidsdfi BIDS dynamic diagnostic bidsdvi
bidsdt BIDS multithreaded static diagnostic bidsdv
bidsdti BIDS multithreaded dynamic diagnostic bidsdvi
cw32 RTL static cp32mt
cw32i RTL dynamic cp32mti
cw32mt RTL multithreaded static cp32mt
cw32mti RTL multithreaded dynamic cp32mti
vcl VCL static vcl
vcld VCL debug vcl
nafxcw MFC static nafxcw
nafxcwd MFC static diagnostic nafxcwd
bfcs?? MFC static part of DLL bfcs42
bfcs??d MFC static part of DLL diagnostic bfcs42d
bfc?? MFC dynamic bfc42
bfc??d MFC dynamic diagnostic bfc42d
bfco??d MFC OLE DLL diagnostic bfco42d
bfcd??d MFC Database DLL diagnostic bfcd42d
bfcn??d MFC Internet DLL diagnostic bfcn42d
──────────────────────────────────────
만일 커맨드라인에 -v 옵션을 포함하거나 MFC 프로젝트를 컨버젼한다면, 단지 MFC와
VCL 라이브러리 이름들은 최종의 버젼들로 갱신되어지고 _NO_VCL이 매크로 정의
리스트에 추가되어진다. MFC 프로젝트에서 _MSC_VER=1100는 매크로정의의 리스트에
의존되어진다.(?)
데이타 정렬 스위치는 다음과 같이 전환되어진다.
─────────────────┬────────────────────
Source (.IDE) │ Target (.BPR)
─────────────────┼────────────────────
-a4 │ (none)
(none) │ -a1
-a2, -a8, -a16 │ -a2, -a8, -a16
─────────────────┴────────────────────
-a1 스위치는 OWL/MFC/VCL 이 아닌 응용프로그램에 추가되어진다.
(OWL, MFC, VCL은 모두 C++ Builder의 기본값인 -a4를 사용한다.)
IDETOBPR은 생성된 .BPR 파일에 기본으로 아래에 있는 컴파일러와 링커의 플래그를
on 시킨다. 다른 모든 옵션들은 .IDE 파일에 저장된 원래의 값들을 보존한다.
Compiler: -Od -Hc -w -k -r- -y -v -vi- -c -b- -w-par -w-inl
Linker: -x -v
IDETOBPR을 실행한 후 C++ Builder IDE에서 기본값을 변경할수 있다.
IDETOBPR는 -v 옵션이 지정된경우 단일 쓰레드 프로젝트에 -WM- 옵션을 추가하며,
Borland C++ 5.02 이후부터 멀티 쓰레딩은 기본값으로 되어졌다.(__MT__로 정의하며
-WM 옵션다.)
|