- Qt 6.9
- Qt Wayland Compositor
- qt_generate_wayland_protocol_server_sources
- Qt Wayland Compositor | Commercial or GPLv3

# qt_generate_wayland_protocol_server_sources

Generates server-side C++ bindings for a Wayland protocol .XML file

The command is defined in the `WaylandCompositor` component of the `Qt6` package, which can be loaded like so:

     find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)

This command was introduced in Qt 6.0.

## Synopsis

     qt_generate_wayland_protocol_server_sources(target
                                                 [PUBLIC_CODE | PRIVATE_CODE]
                                                 FILES file1.xml [file2.xml ...])

If versionless commands are disabled, use `qt6_generate_wayland_protocol_server_sources()` instead. It supports the same set of arguments as this command.

## Description

qt_generate_wayland_protocol_server_sources() creates the build steps to run `waylandscanner` and `qtwaylandscanner` on one or more Wayland protocol files. The tools will in turn generate binding code in C and C++ for implementing the protocols, and the resulting files will be built as part of the `target`.

The options `PUBLIC_CODE` and `PRIVATE_CODE` (added in Qt 6.8) correspond to the `public-code` and `private-code` options of `wayland-scanner`. For backwards compatibility `PUBLIC_CODE` is the default but generally `PRIVATE_CODE` is strongly recommended.

qt_generate_wayland_protocol_server_sources() will trigger generation of the files needed to implement the compositor side of the protocol.

qt_generate_wayland_protocol_client_sources() is the equivalent function for the client.

See the Custom Shell or Custom Extension examples for a demonstration of how to use these functions.