[CMake] Help getting my simple OpenGL project to use cmake
Craig Pemberton
craigpemberton at gmail.com
Thu Jul 8 04:05:55 EDT 2010
Hello everyone,
I am working on converting my project from using a handwritten
Makefile to using cmake.
I have been playing with cmake but I keep running into problems and
I'm probably writing really ugly CMakeLists.txt files.
My project is laid out like this:
graphics/
data/
bark.rgb
ground.rgb
leaf.rgb
library/
Affine.cpp
Affine.h
Camera.cpp
Camera.h
Canvas.cpp
Canvas.h
Color.cpp
Color.h
Light.cpp
Light.h
Material.cpp
Material.h
Matrix.cpp
Matrix.h
Quaternion.cpp
Quaternion.h
Ray.cpp
Ray.h
Texture.cpp
Texture.h
utility.cpp
Vertex.cpp
Vertex.h
programs/
exam.cpp
forces.cpp
ifs.cpp
lsystem.cpp
raytrace.cpp
subdivide.cpp
testray.cpp
My "library" is all the classes that I use while the programs are each
files with a main function in them.
My code relies on Glut and OpenGl.
I would like cmake to build an executable for each of the files in
programs and preferably build out of source so things stay relatively
clean.
Here is what my CMakeLists.txt files currently look like and I have no
idea if I'm remotely doing the right thing.
In the root directory /
cmake_minimum_required (VERSION 2.6)
project(Pemberton)
find_package(GLUT)
find_package(OpenGL)
add_definitions(-Wall -Wextra -pedantic -Werror -O3)
SUBDIRS(library programs)
INCLUDE_DIRECTORIES(library)
set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/library")
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")
mark_as_advanced(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
In library/
FILE(GLOB SOURCE_FILES *.cpp)
FILE(GLOB INCLUDE_FILES *.h)
SOURCE_GROUP("Source Files" FILES ${SOURCE_FILES})
SOURCE_GROUP("Header Files" FILES ${HEADER_FILES})
ADD_LIBRARY (Graphics STATIC ${SOURCE_FILES} ${INCLUDE_FILES})
In programs/
include_directories(../library)
#FILE(GLOB SOURCE_FILES .*.cpp)
#FILE(GLOB INCLUDE_FILES *.h)
#SOURCE_GROUP("Source Files" FILES ${SOURCE_FILES})
#SOURCE_GROUP("Header Files" FILES ${HEADER_FILES})
find_package(GLUT)
find_package(OpenGL)
add_executable(lsystem lsystem.cpp ${GLUT_LIBRARY} ${OPENGL_LIBRARY})
#set(PROGRAMS ifs lsystem raytrace subdivide)
#set(CORELIBS ${GLUT_LIBRARY} ${OPENGL_LIBRARY} GL GLU)
#foreach(programs ${PROGRAMS})
# add_executable(${program} ${SOURCE_FILES} ${INCLUDE_FILES})
#target_link_libraries(${program} ${CORELIBS})
#endforeach(program)
What is the correct way to set this up? Currently it's saying it can't
find OpenGL functions. I would like to have some really nice clean
cmake files.
Best regards,
Craig
More information about the CMake
mailing list