qt5base-lts/examples/dbus
Alexandru Croitor 5138a970f3 CMake: Workaround building DBus 'car' example with qmake
While trying to implement instructions for building examples with
qmake in the CI, an issue has surfaced.

When building examples with CMake with -DBUILD_EXAMPLES=ON in the CI,
the examples are built in-source, aka source dir == build dir.
This means that the header files generated by qdbusxml2cpp will be
placed in the qtbase source dir.

The instructions that try to build examples with qmake build the
examples in a separate build dir after building the examples with CMake.

Unfortunately the qtbase/examples/dbus/remotecontrolledcar/car example
includes the generated DBus adaptor header via a statement like
  #include "car_adaptor.h"
and the compiler prefers to pick up the header file from the example
source dir (the one generated by CMake), rather than the one generated
by qmake in the example build dir.

Because CMake's DBus integration uses different flags than qmake's
DBus integration, the generated header file code is not compatible
with the qmake generated cpp file, and the example fails to link when
building with qmake, because it can't find an appropriate constructor
symbol.

In an ideal world, we wouldn't do in-source builds with the CMake
build, but that leads to other issues which I currently don't recall.

To circumvent the issue, adapt the CMake DBus qt6_add_dbus_adaptor
function to allow not passing the problematic '-l' flag by making it
optional. This shouldn't break existing code, but allows us to
generate a compatible header that will be used by qmake and succeed in
linking the example.

Task-number: QTBUG-85986
Change-Id: I06759f79aeb66bb32da7f158f55dd4734c4a9887
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-23 11:04:04 +02:00
..
chat CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
complexpingpong CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
doc Doc: Add references to QDBusAbstractAdaptor implementation example 2018-06-29 05:16:04 +00:00
listnames CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
pingpong CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
remotecontrolledcar CMake: Workaround building DBus 'car' example with qmake 2020-08-23 11:04:04 +02:00
CMakeLists.txt CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
dbus.pro Use qtConfig where appropriate 2017-01-27 10:38:46 +00:00