[CMake] question about QT4_WRAP_CPP

Pau Garcia i Quiles pgquiles at elpauer.org
Mon Dec 7 18:48:28 EST 2009


On Tue, Dec 8, 2009 at 12:21 AM, Glenn Hughes <ghughes02138 at gmail.com> wrote:
> Thanks Pau,
>
> Interesting! If I remove the #include "moc_main.cxx" line, then the
> generated moc file includes "main.h", so then everything will build. I guess
> moc auto-detects which method you are using, and generates its code
> accordingly.

The problem you were having is you were moc'ing files twice[*],
therefore the linker found two references to the very same methods,
one generated by automoc, the other generated by qt4_wrap_cpp.

[*] Assuming you had not cleaned your build directory

> I was trying to see if there was a way I could build the example without
> splitting the object def in main.cpp into main.h... but I guess not. So,
> this is a minor difference between CMake and qmake. In qmake its OK to have
> your object definitions in your source files, but it seems in CMake there's
> no way to do this cleanly.

There is. It's called QT4_AUTOMOC. Try the example I attached to the bugreport.

> Yes, I understand what you're saying about the bug with QT4_AUTOMOC... And
> the header not existing at all is a similar case to the header and src being
> in different directories.

You don't need to split .h and .cpp if you use QT4_AUTOMOC but until
the bug is fixed (sorry Clinton, I don't have time at the moment to
fix it), QT4_AUTOMOC will only work if .h and .cpp files are in the
same directory.

>
> Cheers
> Glenn
>
> On Mon, Dec 7, 2009 at 6:08 PM, Pau Garcia i Quiles <pgquiles at elpauer.org>
> wrote:
>>
>> If you use QT4_WRAP_CPP, do not #include "blah.moc"
>>
>> If you use QT4_AUTOMOC, #include "blah.moc"
>>
>> QT4_AUTOMOC is more convenient but currently there's the bug I pointed
>> in my other e-mail: if the .h and the .cpp file for a class are in
>> different directories, QT4_AUTOMOC fails.
>>
>> --
>> Pau Garcia i Quiles
>> http://www.elpauer.org
>> (Due to my workload, I may need 10 days to answer)
>
>



-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)


More information about the CMake mailing list