That is what he said, but it seems to be a typo, because the CMakeLists.txt
file clearly states 'set(QT_DIR
${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/Qt/4.8.6)'
- still a stone-age version of Qt actually :(Sincerely, Jakob van Bethlehem On Wed, Jun 1, 2016 at 9:09 AM, Hendrik Sattler <[email protected]> wrote: > > > Am 1. Juni 2016 09:02:41 MESZ, schrieb Jakob van Bethlehem < > [email protected]>: > >Hej, > > > >Some things that come to mind: > >* You're generating files *inside* the source tree - you're not > >supposed to > >do that > >* Why do you want to have a special Qt_tmp directory? I don't see the > >benefit, and without that requirement you can simply use the > >qt4_wrap_cpp > >macro explicitly and you still are not forced to use the automoc > >feature > > > >And now for what is probably wrong in your CMakeLists.txt: > >* It seems you made an important mistake regarding the behaviour of > >'file(GLOB)'. That function will do the expansion *while running > >CMake*. > >But at that time the moc_* files *don't exist!* (as a matter of fact, > >the > >tmp directory doesn't even exist). In other words, your ${Moc_SOURCES} > >will > >be empty, and hence they are not compiled, and hence you get precisely > >the > >linker errors you see (because these sources implement the functions > >that > >are listed as missing by the linker) > > > >If you would use the qt4_wrap_cpp() macro you don't run into this > >problem, > >so I'd strongly suggest using it. > > Except that he is using Qt3. > > >Sincerely, > >Jakob van Bethlehem > > > > > > > > > >On Tue, May 31, 2016 at 4:52 PM, irene w <[email protected]> wrote: > > > >> It seems CMakw could not find the generated moc_xxx files. I > >modified the > >> scripts to specify moc_xxx files is generated, but it still has same > >errors. > >> > >> ADD_CUSTOM_COMMAND ( OUTPUT ${Qt_tmp}/moc_GMWindow.cpp > >> COMMAND ${QT_MOC_CMD} ${GM_DIR}/GMWindow.h -o > >> ${Qt_tmp}/moc_GMWindow.cpp > >> DEPENDS ${GM_DIR}/GMWindow.h > >> ) > >> ADD_CUSTOM_TARGET(generate_foo DEPENDS ${Qt_tmp}/moc_GMWindow.cpp) > >> SET_SOURCE_FILES_PROPERTIES(${Qt_tmp}/moc_GMWindow.cpp PROPERTIES > >> GENERATED 1) > >> SET_PROPERTY(SOURCE ${GM_DIR}/GMWindow.cpp APPEND PROPERTY > >OBJECT_DEPENDS > >> ${Qt_tmp}/moc_GMWindow.cpp) > >> > >> ..... > >> add_dependencies (GM generate_foo) > >> > >> > >> Does the Macro "SET_SOURCE_FILES_PROPERTIES" with "GENERATED" > >> setting work for this purposes? Any help would be greatly > >appreciated ! > >> > >> > >> On Wed, May 25, 2016 at 12:48 PM, irene w <[email protected]> > >wrote: > >> > >>> Hi, > >>> > >>> I am compiling a simple Qt3 application on Linux using CMake. In my > >case, > >>> I need to build moc_xxx files with custom options and output to a > >specified > >>> directory, So, I was not using CAMKE_AUTO macros. My cmake scripts > >create a > >>> "Qt_tmp" directory and output moc_xxx there. > >>> > >>> It looked it always failed to link the moc_xxx files for the first > >time > >>> build when there is no "Qt_tmp" directory, and succeeded if I ran > >build > >>> again if the "Qt_tmp" directory and moc_xxx files created by the > >failed > >>> build were kept without removing. However, it'll fail if I delete > >>> the "Qt_tmp" directory. > >>> > >>> Even it failed at the first build, the moc_xxx files were > >>> successfully created in the "Qt_tmp" directory. > >>> > >>> Here is my cmake scripts and the errors I got. Can anyone help me > >to > >>> figure out the issues? Any help would be greatly appreciated. > >Thanks. > >>> > >>> CMakeLists.txt > >>> > >>> > > >--------------------------------------------------------------------------------------------- > >>> cmake_minimum_required(VERSION 3.4.1) > >>> project (GM_Application CXX) > >>> SET (CMAKE_SYSTEM_NAME Linux) > >>> SET (CMAKE_CXX_COMPILER ${COMPILER_PATH}${CROSS_COMPILE}g++) > >>> set (GM_DIR ${CMAKE_CURRENT_SOURCE_DIR}) > >>> set (QT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/Qt/4.8.6) > >>> LINK_DIRECTORIES (${QT_DIR}/lib) > >>> INCLUDE_DIRECTORIES ("${QT_DIR}/include" > >>> "${GM_DIR}" > >>> ) > >>> ##### Compiling QT moc and ui ##### > >>> set (QT_MOC_CMD ${QT_DIR}/bin/moc -I$(QT_DIR)/mkspecs/linux-g++ > >>> -I${QT_DIR}/include -I${QT_DIR}/include/QtGui) > >>> file (MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Qt_tmp) > >>> set (Qt_tmp ${CMAKE_CURRENT_SOURCE_DIR}/Qt_tmp) > >>> add_custom_target (Moc_GMWindows > >>> COMMAND ${QT_MOC_CMD} ${GM_DIR}/GMWindow.h -o > >>> ${Qt_tmp}/moc_GMWindow.cpp > >>> ) > >>> > >>> ##### Compiling application ##### > >>> file (GLOB GM_SOURCES ${GM_DIR}/*.h ${GM_DIR}/*.cpp) > >>> file (GLOB Moc_SOURCES ${Qt_tmp}/*.h ${Qt_tmp}/*.cpp) > >>> add_executable (GM ${GM_SOURCES} ${Moc_SOURCES}) > >>> target_include_directories (GM PRIVATE ${Qt_tmp}) > >>> add_dependencies (GM Moc_GMWindows) > >>> target_link_libraries (GM QtGui) > >>> > >>> > >>> > > >------------------------------------------------------------------------------------------- > >>> Errors: > >>> > >>> Scanning dependencies of target Moc_GMWindows > >>> [ 0%] Built target Moc_GMWindows > >>> Scanning dependencies of target GM > >>> [ 14%] Building CXX object GM/CMakeFiles/GM.dir/GM/GM.cpp.o > >>> [ 42%] Building CXX object GM/CMakeFiles/GM.dir/GM/GMService.cpp.o > >>> [ 67%] Building CXX object GM/CMakeFiles/GM.dir/GM/GMWindow.cpp.o > >>> [ 85%] Building CXX object GM/CMakeFiles/GM.dir/GM/main.cpp.o > >>> [100%] Linking CXX executable ../bin/GM > >>> CMakeFiles/GM.dir/GM/GMWindow.cpp.o: In function > >>> `GM::GMWindow::emitAppendMessage(QStrin > >>> g)': > >>> /GM/GMWindow.cpp:217: undefined reference to > >>> `GM::GMWindow::appendMessage(QString)' > >>> > >CMakeFiles/GM.dir/GM/GMWindow.cpp.o:(.rodata._ZTVN2GM8GMWindowE[vtable > >>> for GM::GMWindow] > >>> +0x8): undefined reference to `GM::GMWindow::metaObject() const' > >>> > >CMakeFiles/GM.dir/GM/GMWindow.cpp.o:(.rodata._ZTVN2GM8GMWindowE[vtable > >>> for GM::GMWindow] > >>> +0xc): undefined reference to `GM::GMWindow::qt_metacast(char > >const*)' > >>> > >CMakeFiles/GM.dir/GM/GMWindow.cpp.o:(.rodata._ZTVN2GM8GMWindowE[vtable > >>> for GM::GMWindow] > >>> +0x10): undefined reference to > >>> `GM::GMWindow::qt_metacall(QMetaObject::Call, int, void**)' > >>> collect2: ld returned 1 exit status > >>> make[2]: *** [bin/GM] Error 1 > >>> make[1]: *** [GM/CMakeFiles/GM.dir/all] Error 2 > >>> make: *** [all] Error 2 > >>> > >>> > >>> > >>> > >< > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail > > > >Virus-free. > >>> www.avast.com > >>> > >< > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail > > > >>> > > ><#m_3542150497808946122_m_6400203814648417669_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > >>> > >> > >> > >> -- > >> > >> Powered by www.kitware.com > >> > >> Please keep messages on-topic and check the CMake FAQ at: > >> http://www.cmake.org/Wiki/CMake_FAQ > >> > >> Kitware offers various services to support the CMake community. For > >more > >> information on each offering, please visit: > >> > >> CMake Support: http://cmake.org/cmake/help/support.html > >> CMake Consulting: http://cmake.org/cmake/help/consulting.html > >> CMake Training Courses: http://cmake.org/cmake/help/training.html > >> > >> Visit other Kitware open-source projects at > >> http://www.kitware.com/opensource/opensource.html > >> > >> Follow this link to subscribe/unsubscribe: > >> http://public.kitware.com/mailman/listinfo/cmake > >> > > > > > >------------------------------------------------------------------------ > > -- > Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail > gesendet. > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
