127 lines
4.1 KiB
CMake
127 lines
4.1 KiB
CMake
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
|
|
# Name of the project
|
|
PROJECT(L09)
|
|
|
|
# FOR LAB MACHINES ONLY!
|
|
# DO NOT EDIT
|
|
SET(DEF_DIR_GLM "C:\\c++\\glm")
|
|
SET(DEF_DIR_GLFW "C:\\c++\\glfw-3.2.1")
|
|
SET(DEF_DIR_GLEW "C:\\c++\\glew-2.0.0")
|
|
|
|
# Is this the solution?
|
|
# Override with `cmake -DSOL=ON ..`
|
|
OPTION(SOL "Solution" OFF)
|
|
|
|
# Use glob to get the list of all source files.
|
|
# We don't really need to include header and resource files to build, but it's
|
|
# nice to have them also show up in IDEs.
|
|
IF(${SOL})
|
|
FILE(GLOB_RECURSE SOURCES "src0/*.cpp")
|
|
FILE(GLOB_RECURSE HEADERS "src0/*.h")
|
|
FILE(GLOB_RECURSE GLSL "resources0/*.glsl")
|
|
ELSE()
|
|
FILE(GLOB_RECURSE SOURCES "src/*.cpp")
|
|
FILE(GLOB_RECURSE HEADERS "src/*.h")
|
|
FILE(GLOB_RECURSE GLSL "resources/*.glsl")
|
|
ENDIF()
|
|
|
|
# Set the executable.
|
|
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${SOURCES} ${HEADERS} ${GLSL})
|
|
|
|
# Get the GLM environment variable. Since GLM is a header-only library, we
|
|
# just need to add it to the include directory.
|
|
SET(GLM_INCLUDE_DIR "$ENV{GLM_INCLUDE_DIR}")
|
|
IF(NOT GLM_INCLUDE_DIR)
|
|
# The environment variable was not set
|
|
SET(ERR_MSG "Please point the environment variable GLM_INCLUDE_DIR to the root directory of your GLM installation.")
|
|
IF(WIN32)
|
|
# On Windows, try the default location
|
|
MESSAGE(STATUS "Looking for GLM in ${DEF_DIR_GLM}")
|
|
IF(IS_DIRECTORY ${DEF_DIR_GLM})
|
|
MESSAGE(STATUS "Found!")
|
|
SET(GLM_INCLUDE_DIR ${DEF_DIR_GLM})
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ENDIF()
|
|
INCLUDE_DIRECTORIES(${GLM_INCLUDE_DIR})
|
|
|
|
# Get the GLFW environment variable. There should be a CMakeLists.txt in the
|
|
# specified directory.
|
|
SET(GLFW_DIR "$ENV{GLFW_DIR}")
|
|
IF(NOT GLFW_DIR)
|
|
# The environment variable was not set
|
|
SET(ERR_MSG "Please point the environment variable GLFW_DIR to the root directory of your GLFW installation.")
|
|
IF(WIN32)
|
|
# On Windows, try the default location
|
|
MESSAGE(STATUS "Looking for GLFW in ${DEF_DIR_GLFW}")
|
|
IF(IS_DIRECTORY ${DEF_DIR_GLFW})
|
|
MESSAGE(STATUS "Found!")
|
|
SET(GLFW_DIR ${DEF_DIR_GLFW})
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ENDIF()
|
|
OPTION(GLFW_BUILD_EXAMPLES "GLFW_BUILD_EXAMPLES" OFF)
|
|
OPTION(GLFW_BUILD_TESTS "GLFW_BUILD_TESTS" OFF)
|
|
OPTION(GLFW_BUILD_DOCS "GLFW_BUILD_DOCS" OFF)
|
|
IF(CMAKE_BUILD_TYPE MATCHES Release)
|
|
ADD_SUBDIRECTORY(${GLFW_DIR} ${GLFW_DIR}/release)
|
|
ELSE()
|
|
ADD_SUBDIRECTORY(${GLFW_DIR} ${GLFW_DIR}/debug)
|
|
ENDIF()
|
|
INCLUDE_DIRECTORIES(${GLFW_DIR}/include)
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} glfw ${GLFW_LIBRARIES})
|
|
|
|
# Get the GLEW environment variable.
|
|
SET(GLEW_DIR "$ENV{GLEW_DIR}")
|
|
IF(NOT GLEW_DIR)
|
|
# The environment variable was not set
|
|
SET(ERR_MSG "Please point the environment variable GLEW_DIR to the root directory of your GLEW installation.")
|
|
IF(WIN32)
|
|
# On Windows, try the default location
|
|
MESSAGE(STATUS "Looking for GLEW in ${DEF_DIR_GLEW}")
|
|
IF(IS_DIRECTORY ${DEF_DIR_GLEW})
|
|
MESSAGE(STATUS "Found!")
|
|
SET(GLEW_DIR ${DEF_DIR_GLEW})
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR ${ERR_MSG})
|
|
ENDIF()
|
|
ENDIF()
|
|
INCLUDE_DIRECTORIES(${GLEW_DIR}/include)
|
|
IF(WIN32)
|
|
# With prebuilt binaries
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} ${GLEW_DIR}/lib/Release/Win32/glew32s.lib)
|
|
ELSE()
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} ${GLEW_DIR}/lib/libGLEW.a)
|
|
ENDIF()
|
|
|
|
# OS specific options and libraries
|
|
IF(WIN32)
|
|
# c++11 is enabled by default.
|
|
# -Wall produces way too many warnings.
|
|
# -pedantic is not supported.
|
|
# Disable warning 4996.
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} opengl32.lib)
|
|
ELSE()
|
|
# Enable all pedantic warnings.
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -pedantic")
|
|
IF(APPLE)
|
|
# Add required frameworks for GLFW.
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} "-framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo")
|
|
ELSE()
|
|
#Link the Linux OpenGL library
|
|
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} "GL")
|
|
ENDIF()
|
|
ENDIF()
|