[CMake] Compiling OpenGL application with CMake
Philip Lowman
philip at yhbt.com
Thu Feb 19 20:30:18 EST 2009
On Thu, Feb 19, 2009 at 8:18 PM, Andrea Tagliasacchi <ata2 at cs.sfu.ca> wrote:
> Hello everybody,
>
> I have given up on Makefiles, implicit rules and unreadability just annoyed
> me.
> Also the ability of generating cross platform compile files is very
> appealing.
>
> As far as I compile my independent code (no external libraries)
> everything goes fine. However, one of my applications is a simple
> OpenGL based visualizer and I am having problems finding the correct
> set of setting of the CMakeLists.txt.
>
> Right now I hacked a *temporary solution* that compiles that file
> in an architecture dependent way:
>
> find_package(GLUT)
> find_package(OpenGL)
> IF(APPLE)
> SET(CMAKE_CXX_LINK_FLAGS "-framework OpenGL -framework GLUT")
> ADD_EXECUTABLE(mesh_view mesh_view.cpp)
> ENDIF(APPLE)
>
> Browsing around I was able to construct the following but I am still
> getting
> linking errors as reported below:
>
> find_package(GLUT)
> find_package(OpenGL)
> if (OPENGL_FOUND)
> MESSAGE("OpenGL Correctly Found")
> include_directories(${OPENGL_INCLUDE_DIR})
> else (OPENGL_FOUND)
> MESSAGE("OpenGL environment missing")
> endif (OPENGL_FOUND)
>
> Example of linking errors:
> Linking CXX executable mesh_view
> Undefined symbols:
> "_glViewport", referenced from:
> reshapeCallback(int, int)in mesh_view.cpp.o
> "_glMaterialfv", referenced from:
> displayCallback() in mesh_view.cpp.o
> "_glLoadIdentity", referenced from:
> init_opengl() in mesh_view.cpp.o
> motionCallback(int, int)in mesh_view.cpp.o
> displayCallback() in mesh_view.cpp.o
>
> I also checked the CMake files of OpenSceneGraph
> but I can find only include directory specifications, no linking.
>
> Browsing around I also found the following but even if I add them nothing
> changes:
> INCLUDE(${CMAKE_ROOT}/Modules/FindOpenGL.cmake)
> SET(CMAKE_REQUIRED_LIBRARIES ${GLUT_LIBRARY} ${GL_LIBRARY})
> LINK_DIRECTORIES(${OPENGL_LIBRARIES})
> Any suggestion?
Try TARGET_LINK_LIBRARIES(mesh_view ${OPENGL_LIBRARIES})
If it fails to link you can use "make VERBOSE=1" to look at the
compiler/linker flags.
--
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090219/6ec560d2/attachment.htm>
More information about the CMake
mailing list