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

Reply via email to