기술탐구

[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;

버전별로 다른 컴파일을 할려면 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.