Condicionar condicionalmente unidades para FMX ou VCL

Eu quero ter uma lista diferente de unidades nouses cláusula dependendo da compilação para FMX ou VCL. No código abaixo eu tento testarFireMonkeyVersion que funciona em um projeto FMX (label1.Text é 'FMX'). Quando eu movo a instrução $ IF para ouses cláusula recebo uma mensagem de erro ([dcc32 Error] fmx_text.pas(7): E2026 Constant expression expected). Existe alguma maneira de obter a compilação condicional desejada?

unit fmx_text;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Types;
{$IF FireMonkeyVersion >= 16}
   {$DEFINE HAS_FMX}
{$ELSE}
   {$DEFINE HAS_VCL}
{$IFEND}

type

  TForm2 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.FormCreate(Sender: TObject);
begin
   label1.Text := 'Undefined';
{$IFDEF HAS_FMX}
   label1.Text := 'FMX';
{$ENDIF}
{$IFDEF HAS_VCL}
   label1.Text := 'VCL';
{$ENDIF}
end;

end.

questionAnswers(1)

yourAnswerToTheQuestion