Hi there,
I have trouble with the linker when using Qt4 with OpenGL widgets. The
strange thing is that the same configuration file works in one project,
and in the other it does not. Here is my CMakeLists.txt file for the
project:
-------
project ( QuickView )
find_package( Qt4 REQUIRED )
set( QT_USE_QTGUI TRUE )
set( QT_USE_QTOPENGL TRUE )
include(${QT_USE_FILE})
add_definitions( -Wall )
set(QuickView_INCLUDEPATH
.
src
../QGLMeshPlotWidget
)
# forms
set( QuickView_UIS
src/quickview.ui
)
# regular sources
set( QuickView_SRCS
../QGLMeshPlotWidget/qglmeshplotwidget.cpp
src/quickview.cpp
src/main.cpp
src/d5_readnotify.cpp
)
# files we need to run moc over (all files with Q_OBJECT in it)
set( QuickView_MOC_HDRS
../QGLMeshPlotWidget/qglmeshplotwidget.h
src/quickview.h
src/d5_readnotify.h
)
# so that we have our application icon
set( QuickView_RCS
QuickView.rc
)
# Qt resource file
set( QuickView_RESOURCES
quickview.qrc
)
# compile resources
qt4_add_resources( QuickView_RC_SRCS ${QuickView_RESOURCES} )
# uic on .ui files
qt4_wrap_ui( QuickView_UI_HDRS ${QuickView_UIS} )
# run moc on header files with Q_OBJECT
qt4_wrap_cpp( QuickView_MOC_SRCS ${QuickView_MOC_HDRS} )
# add our include directories (necessary for ui, moc and so that we find
the generated files)
include_directories(
${QuickView_INCLUDEPATH}
${QT_ADDITIONAL_INCLUDE_PATHS}
${CMAKE_BINARY_DIR}
${QuickView_BINARY_DIR}
)
# add the QuickView executable (built from all of the source files)
add_executable( QuickView ${QuickView_SRCS} ${QuickView_MOC_SRCS}
${QuickView_RC_SRCS} ${QuickView_UI_HDRS} )
# and link the libraries
target_link_libraries( QuickView ${QuickView_LINK_LIBS} ${QT_LIBRARIES})
-------
However, after compilation (which works fine), I get an output like:
"C:\Program Files\CMake 2.4\bin\cmake.exe" -P
CMakeFiles\QuickView.dir\cmake_clean_target.cmake
c:\MinGW\bin\g++.exe -O3 -DNDEBUG
"CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj"
"CMakeFiles/QuickView.dir/src/quickview.obj"
"CMakeFiles/QuickView.dir/src/main.obj"
"CMakeFiles/QuickView.dir/src/d5_readnotify.obj"
"CMakeFiles/QuickView.dir/moc_qglmeshplotwidget.obj"
"CMakeFiles/QuickView.dir/moc_quickview.obj"
"CMakeFiles/QuickView.dir/moc_d5_readnotify.obj"
"CMakeFiles/QuickView.dir/qrc_quickview.obj" -o QuickView.exe
-Wl,--major-image-version,0,--minor-image-version,0
-Ld:\ghorwin\projects\CHAMPS\development\tools\QuickView\QuickView\build\delphin_outputs_lib
-Lc:\Qt\4.2.0\lib -Wl,-Bstatic -lQtOpenGL4 -lQtGui4 -Wl,-Bdynamic -lImm32
-lWinmm -Wl,-Bstatic -lQtCore4 -Wl,-Bdynamic -lWs2_32
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0x721):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xb58):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xb67):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xb6f):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xc7a):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xc89):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xe3d):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xe4c):
undefined reference to [EMAIL PROTECTED]'
CMakeFiles/QuickView.dir/D_/ghorwin/projects/CHAMPS/development/tools/QuickView/QGLMeshPlotWidget/qglmeshplotwidget.obj:qglmeshplotwidget.cpp:(.text+0xe54):
undefined reference to [EMAIL PROTECTED]'
...
and so on
Now what am I missing in my cmake project? Could someone maybe post a
minimal Qt4 project with OpenGL?
Thanks for the help,
Andreas
--
Andreas Nicolai [EMAIL PROTECTED]
PhD Candidate, M.A.M.E (315) 443-2641
Syracuse University
151 Link Hall
Syracuse, NY, 13244
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake