someclass.h, someclass_alternative.cpp and auto moc
Friedrich W. H. Kossebau
kossebau at kde.org
Thu Oct 19 15:13:37 UTC 2017
Am Donnerstag, 19. Oktober 2017, 14:42:10 CEST schrieb René J.V. Bertin:
> On Thursday October 19 2017 14:03:16 Milian Wolff wrote:
> >Are you maybe missing the explicit moc include?
>
> No, the problem is that there's no way to specify the right moc. Qt imposes
> that it matches the filename (so with the _qtb suffix), but then it won't
> include anything defined in the headerfile if the header doesn't also have
> the _qtb suffix. (Is that clear? =) )
For the record, it is not some "Qt" which imposes this, but CMake's automoc
and it's primitive "automagic" estimation of header files to be moc'ed:
"
If an #include statement like #include "moc_foo.cpp" is found, the Q_OBJECT
class declaration is expected in the header, and moc is run on the header
file.
"
where "header" seems hard calculated (missing documentation) by
header_filename = $moc_filename - "moc_" - SOURCE_EXT + HEADER_EXT
And
"
Additionally, header files with the same base name (like foo.h) or _p appended
to the base name (like foo_p.h) are parsed for Q_OBJECT macros, and if found,
moc is also executed on those files.
"
See https://cmake.org/cmake/help/v3.0/prop_tgt/AUTOMOC.html
Cheers
Friedrich
More information about the KDevelop-devel
mailing list