Условная компиляция в зависимости от текущего активного проекта - PullRequest
1 голос
/ 22 октября 2010

Я разрабатываю новый модуль для большого приложения в Delphi 2010.

Я организовал свои источники в группу проектов из двух проектов: один для создания полного приложения и один два для запуска моего набора тестов (который разделяет некоторый исходный код с основным приложением).

Во время инициализации модуля мне нужно действовать по-разному в зависимости от того, какой из двух я компилировал.

unit MySharedUnit
var
  flag : TFlagValues;

implementation
[...]

initialization

if IsTestProject then
  flag := TestValue
else
  flag := ReleaseValue;
end. 

В настоящее время яиспользуйте определенную проектом переменную среды (определенную только в одной из опций проектов ), чтобы определить активный проект.

Мой вопрос:

Есть ли другой или более элегантный способ сделать это, например встроенное значение # define'd или около того, который не потребовал бы от меня изменения параметров проекта вручную, когда тестовое приложение должно быть запущено в режиме выпуска?

1 Ответ

6 голосов
/ 22 октября 2010

Delphi знает условную компиляцию, например:

initialization
{$IFDEF FULLVERSION}
  flag := ReleaseValue;
{$ELSE}
  flag := TestValue
{$ENDIF}
end. 

Вы можете установить FULLVERSION (или любое другое имя) в проекте, если хотите.

В Delphi 2010 у вас может быть другой набор опций для версий отладки и выпуска.

...