[Interest] Failed to make moc for cpp source file.

Bo Thorsen bo at vikingsoft.eu
Tue Feb 10 12:35:35 CET 2015


Den 10-02-2015 kl. 10:30 skrev Igor Mironchik:
> Hi. I ran into a problem.
>
> When building project for Android target, build doesn't make moc for a cpp
> file and compilation failed.
>
> In that cpp I have Q_OBJECT and #include "messagebox.moc"
>
> In Makefile generated I have:
>
> mocables: compiler_moc_header_make_all compiler_moc_source_make_all
>
> compiler_moc_source_make_all: .moc\messagebox.moc
>
> But I got:
>
> ..\..\..\Mobile\QtMWidgets\src\messagebox.cpp:622:26: fatal error:
> messagebox.moc: No such file or directory
>    #include "messagebox.moc"
>                             ^
> compilation terminated.

Hi Igor,

I was just working on a fix for a qmake bug that involves exactly this 
case. In my bug there was a place in the code that said "foo""bar" and 
the workaround is to do "foo" "bar" (notice the space between the two 
strings). It's bug 17533 in the Qt bugtracker.

I guess you hit a bug related this.

You can check if you are hit by a similar bug. Check the Makefile and 
look for the rule to build messagebox.o - it has to list messagebox.moc 
at the end of the list of dependency files. If it's not there, your moc 
file won't be built.

Unfortunately I can't tell you how to work around it, if it is the same 
problem, because there might be other ways to trigger it. The way I 
would work around this is to remove almost all the code in the file and 
see if you can get the moc file to show up as a dependency and then 
re-add the code until it disappears from the list. Then you can find the 
place where your code stops the moc dependency check from working and 
try to find a way to work around it.

For reference, my Makefile.Debug on Windows has this in the file:

####### Compile

debug\main.obj: main.cpp ..\build-5.4\include\QtCore\QtCore \
                 ..\build-5.4\include\QtCore\QtCoreDepends \
                 debug\main.moc

I just saw your second message on this, and you don't get the Makefile. 
So I don't know if this is helpful at all. But the dependency check in 
qmake should be the same for your project generator, so it could be.

Bo Thorsen,
Director, Viking Software.

-- 
Viking Software
Qt and C++ developers for hire
http://www.vikingsoft.eu



More information about the Interest mailing list