On Mon, Dec 7, 2009 at 11:54 PM, Glenn Hughes <ghughes02...@gmail.com> wrote: > I'm still playing around with the states Qt example, and I've hit something > I don't understand: > > I can get everything working as expected with QT4_AUTOMOC, but not if I use > QT4_WRAP_CPP. > > In the QT4_WRAP_CPP case, it seems the only way to get dependencies set up > correctly is to add the MOC output to the target, i.e. > > QT4_WRAP_CPP( states_MOC_files ${states_HEADERS}) > ADD_EXECUTABLE( states MACOSX_BUNDLE ${states_SRCS} ${states_MOC_files} > ${states_RESOURCES_SOURCES} ) > > However, if I do this CMake adds the moc files (named in the form > moc_foo.cxx) to the project to be compiled as C++ files. > BUT, MOC files are not designed to be compiled on their own. Typically they > are included at the bottom of the module that contains the source for the > objects in question. They do not include all the headers that they need, and > so they will not build independently. > > So, if I include the moc files in the ADD_EXECUTABLE line, my build doesn't > work... > but if I remove them, the dependency is not set up, so the moc files are not > generated at all. > > How can I say "these files are required by this target, but don't try to > compile them directly?" > > Or is there something else I should be doing?
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) _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake