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

Reply via email to