It does work. I just tested on Windows.
I copied Bart's code, pasted to Lazarus and it works.
This returns 'Defined':
procedure TForm1.Button1Click(Sender: TObject);
begin
{$if defined(LCLGtk) or defined(LCLQt) or defined(LCLwin32) or defined(LCLcocoa)}
Label1.Caption := 'Defined';
{$else}
Label1.Caption := 'Not defined';
{$endif}
end;
And when I removed defined(LCLwin32), I get 'Not defined':
procedure TForm1.Button1Click(Sender: TObject);
begin
{$if defined(LCLGtk) or defined(LCLQt) or defined(LCLcocoa)}
Label1.Caption := 'Defined';
{$else}
Label1.Caption := 'Not defined';
{$endif}
end;