qt5base-lts/qmake
Giuseppe D'Angelo f66c1db16c Introduce Q_NAMESPACE_EXPORT
A recurring problem with the Q_NAMESPACE macro is that it declares
an object (staticMetaObject) in the surrounding namespace. That
object lacks any export/import qualification to make it usable
with shared libraries.

Introduce therefore another macro to work around this issue, allowing
the user to prefix the object with an exporting macro, f.i. like this:

Q_NAMESPACE_EXPORT(Q_CORE_EXPORT)

The old macro can simply then be rewritten in terms of this new one,
supplying an empty export macro.

Note that NOT passing an argument to a macro expecting one is well
defined behavior in C99 -- the macro will expand an empty token.
Of course, MSVC doesn't like this and emits warnings. As a
workaround, use a variadic macro.

[ChangeLog][QtCore] Added the new Q_NAMESPACE_EXPORT macro. It
can be used just like Q_NAMESPACE to add meta-object information
to a namespace; however it also supports exporting of such
information from shared libraries.

[ChangeLog][Potentially Source-Incompatible Changes] Prefixing
Q_NAMESPACE with an export macro may no longer work. Use the new
Q_NAMESPACE_EXPORT macro for that use case.

Fixes: QTBUG-68014
Change-Id: Ib044a555ace1f77ae8e0244d824ec473550f3d8e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-06-28 06:47:29 +02:00
..
doc doc: Explain how qmake finds for files included in your source code 2019-05-16 13:06:52 +00:00
generators Introduce Q_NAMESPACE_EXPORT 2019-06-28 06:47:29 +02:00
library Merge remote-tracking branch 'origin/5.13' into dev 2019-06-27 14:38:03 +02:00
cachekeys.h Updated license headers 2016-01-21 18:55:18 +00:00
main.cpp Let QINSTALL copy hidden files when installing directories 2019-04-09 08:16:25 +00:00
Makefile.unix Separate out the time, zone, date code from corelib/tools/ 2019-06-06 15:54:32 +02:00
Makefile.unix.macos Merge remote-tracking branch 'origin/5.8' into dev 2016-12-13 09:39:20 +01:00
Makefile.unix.mingw fix "make clean" of qmake in a builddir with spaces on mingw 2017-12-14 18:06:31 +00:00
Makefile.unix.unix Move the readlink(2) wrapper to qcore_unix.cpp 2017-07-08 02:18:16 +00:00
Makefile.unix.win32 qmake: add $$read_registry() function 2019-01-05 20:33:07 +00:00
Makefile.win32 Separate out the time, zone, date code from corelib/tools/ 2019-06-06 15:54:32 +02:00
meta.cpp qmake: Remove dead code 2019-04-05 07:48:34 +00:00
meta.h qmake: Remove dead code 2019-04-05 07:48:34 +00:00
option.cpp qmake: Apply modernize-use-nullptr 2018-08-08 17:30:32 +00:00
option.h qmake: Apply modernize-use-nullptr 2018-08-08 17:30:32 +00:00
project.cpp qmake: use std names on a linked list 2019-05-13 16:39:22 +00:00
project.h qmake: use std names on a linked list 2019-05-13 16:39:22 +00:00
property.cpp Compile with QT_STRICT_ITERATORS defined 2018-11-26 07:04:24 +00:00
property.h move generation of qconfig.cpp (and qt.conf) to qmake-based configure 2016-12-13 18:56:12 +00:00
qmake_pch.h qmake: move QT_BEGIN_NAMESPACE to correct place 2018-12-19 19:21:35 +00:00
qmake-aux.pro revert to building qmake with qconfig.cpp 2017-01-06 20:09:08 +00:00
qmake.pro Remove unneeded qstring_compat.cpp from the qmake build 2019-05-29 14:00:05 +02:00