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> <#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