기술탐구
[C++Builder, Delphi] ifdef 를 사용하여 다른 버전으로 컴파일하기
appleii
2012. 3. 13. 21:16
C/C++ 에는 #ifdef 를 사용하여 Debug 버전, Release 버전으로 컴파일 할 수 있는 방법이 있다. 모드를 다르게 해서 기능이 다르게 컴파일 할 수 있다. Delphi 에서도 $ifdef 가 같은 기능을 한다.
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
#ifdef _DEBUG
cout<<"DEBUG\n";
#endif
#ifdef
NDEBUG
cout<<"RELEASE\n";
#endif
#ifdef PRO
cout<<"Professional\n";
#endif
#ifdef BASIC
cout<<"BASIC\n";
#endif
getch();
return 0;
}
using namespace std;
int main()
{
cout<<"DEBUG\n";
#endif
#ifdef
NDEBUG
cout<<"RELEASE\n";
#endif
#ifdef PRO
cout<<"Professional\n";
#endif
#ifdef BASIC
cout<<"BASIC\n";
#endif
getch();
return 0;
}
버전별로 다른 컴파일을 할려면 Configuration 을 다르게 지정해 주어야 한다.
Project Manager 를 보면 Debug와 Release 버전이 기본적으로 추가되어 있다. 여기에 Professional 버전을 추가할수도 있다. Basic 버전을 추가하려면 마우스 우클릭을 한다.
New Configuration 을 선택한다.
적당한 이름을 짓는다. Basic 으로 지어보자.
새로운 Configuration 이 추가되었다.
여기서 끝이 아니다. define 을 해주어야 한다. Edit 를 선택한다.
Conditional defines 에서 BASIC 으로 정의해보자.
이제 Project Manager 에서 필요한 버전을 마우스로 더블 클릭해서 선택한후 컴파일을 하면 된다. 더블 클릭하면 굵은 글씨(Bold) 로 표시된다.
Delphi 는 $ifdef, $endif 를 사용하면 된다.
program debug_test9;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
{$ifdef DEBUG}
writeln('Debug');
{$endif}
{$ifdef RELEASE}
writeln('Release');
{$endif}
readln;
end.