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
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to