[CMake] How to write CMakeLists.txt for Qt4 when Q_OBJECT in xxx.cpp file

Michael Jackson mike.jackson at bluequartz.net
Sat Jul 31 11:54:30 EDT 2010


On Sat, Jul 31, 2010 at 11:45 AM, 1+1=2 <dbzhang800 at gmail.com> wrote:
> On Sat, Jul 31, 2010 at 11:28 PM, John Drescher <drescherjm at gmail.com> wrote:
>> On Sat, Jul 31, 2010 at 9:05 AM, 1+1=2 <dbzhang800 at gmail.com> wrote:
>>> Thanks for your answer.
>>>
>>> when use QT4_WRAP_CPP( Generated_MOC_SRCS main.cpp ),  moc_main.cxx
>>> will be generated.
>>> then I use #include "moc_main.cxx" instead of #include "main.moc"
>>>
>>> but ${Generated_MOC_SRCS}  can not be added to  ADD_EXECUTABLE.
>>> otherwise moc_main.cxx will be compiled too.
>>>
>> You want moc_main.cxx to be compiled otherwise you will have link errors.
>>
> No, the file moc_main.cxx has been included in main.cpp through
> #include "moc_main.cxx". And this works.
>
> But what I want is: the name of  the moc file which is genenrated from
> main.cpp is main.moc, just as qmake does
>
> Debao.
>>
>> John

_why_ do you need to have the output file named main.moc? is there
some IDE or other pre/post processing script that relies on that name?
Or simply because that is how you did it with qmake? Again, _why_ do
you need to #include main.moc instead of just having it compiled
separately? The results are the same and there is NOTHING in main.moc
that you need to be editing as it is auto generated. Most IDEs will
index the main.moc file so code completion will continue to work even
if you do NOT #include main.moc.

Not trying to be difficult here just saying that sometimes moving
build systems requires you to tweak some things. QMake is NOT CMake so
some things may be slightly different but the end results are the
same.

Mike Jackson


More information about the CMake mailing list