Challenge for real experts: why does cmake 3.1.3 not use automoc for a certain file?

Friedrich W. H. Kossebau kossebau at kde.org
Tue Jun 16 14:00:04 UTC 2015


Am Montag, 8. Juni 2015, 14:52:12 schrieb Ben Cooksley:
> On Sat, Jun 6, 2015 at 10:07 PM, Alex Merry <alex.merry at kde.org> wrote:
> > On Friday 05 June 2015 00:58:30 Friedrich W. H. Kossebau wrote:
> >> you are a cmake and KDE buildsystem expert?
> >> Prove that yourself and improve the world for others ;)
> > 
> > Or, indeed, work towards becoming such an expert...
> > 
> >> Here is the challenge:
> >> 
> >> https://build.kde.org/job/calligra%20frameworks%20kf5-qt5/PLATFORM=Linux,
> >> Var iation=All,compiler=gcc/28/consoleText
> >> 
> >> CMakeFiles/KisAsyncMergerTest.dir/kis_async_merger_test.cpp.o: In
> >> function
> >> `KisAsyncMergerTest::KisAsyncMergerTest()':
> >> /home/jenkins/builds/calligra/kf5-
> >> qt5/krita/image/tests/kis_async_merger_test.h:24: undefined reference to
> >> `vtable for KisAsyncMergerTest'
> >> CMakeFiles/KisAsyncMergerTest.dir/kis_async_merger_test.cpp.o: In
> >> function
> >> `KisAsyncMergerTest::~KisAsyncMergerTest()':
> >> /home/jenkins/builds/calligra/kf5-
> >> qt5/krita/image/tests/kis_async_merger_test.h:24: undefined reference to
> >> `vtable for KisAsyncMergerTest'
> >> collect2: error: ld returned 1 exit status
> >> krita/image/tests/CMakeFiles/KisAsyncMergerTest.dir/build.make:89: recipe
> >> for target 'krita/image/tests/KisAsyncMergerTest' failed
> >> 
> >> Right, you say, smells like automoc not run. And indeed it is not run. So
> >> far you are an expert.
> >> 
> >> But why?
> >> Why does cmake on CI not want to run automoc on
> >> kis_async_merger_test.{h,cpp}?
> >> 
> >> Locally it works fine for anyone (cmake 3.0.1/3.0.2), noone yet was able
> >> to
> > 
> >> reproduce the problem, instead everyone sees:
> > So my first question is: what version of cmake is being run on the build
> > servers? If it's not 3.0.1 or 3.0.2, then that could explain why you can't
> > reproduce it locally.
> 
> The CI system is using "cmake version 3.1.3" on Ubuntu Vivid (15.04).
> Not sure if that makes a difference.

Seems it does make a difference 8\ ...

With cmake version 3.0.1 (from OpenSUSE Tumbleweed package):
$ cd build/calligra.moment/krita/image/tests
$ make help  | grep sync
... KisAsyncMergerTest
... KisAsyncMergerTest_automoc
... KisAsyncMergerTest_automoc.o
... KisAsyncMergerTest_automoc.i
... KisAsyncMergerTest_automoc.s
... kis_async_merger_test.o
... kis_async_merger_test.i
... kis_async_merger_test.s

With cmake version 3.1.3 (manually compiled on my OpenSUSE Tumbleweed):
$ cd build/calligra.moment/krita/image/tests
$ make help  | grep sync
... KisAsyncMergerTest
... kis_async_merger_test.o
... kis_async_merger_test.i
... kis_async_merger_test.s

Uh? Anyone seen something similar? Any idea what could make that newer cmake 
decide that kis_async_merger_test.* does not need automoc?
Putting in some #include "moc_kis_async_merger_test.cpp" also did not have any 
effect.

Anyone an idea for a workaround?

Cheers
Friedrich


More information about the Kde-buildsystem mailing list