# Copyright (C) 2018 Ortega Froysa, Nicolás # Author: Ortega Froysa, Nicolás # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . cmake_minimum_required(VERSION 2.8) project(TTT3D CXX) # Binary filename set(TARGET_NAME "ttt3d") set(TARGET_VERSION "v1.0") # Use DEBUG by default if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "release") endif() string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") # prefer newer versions of OpenGL set(OpenGL_GL_PREFERENCE "GLVND") find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) find_package(GLUT REQUIRED) find_package(PkgConfig REQUIRED) pkg_search_module(ASSIMP REQUIRED assimp) pkg_search_module(SDL2 REQUIRED sdl2) include_directories( SYSTEM ${ASSIMP_INCLUDE_DIRS} SYSTEM ${SDL2_INCLUDE_DIRS}) set(SRCS "src/AssetManager.cpp" "src/Camera.cpp" "src/Logger.cpp" "src/Main.cpp" "src/Model.cpp" "src/Shader.cpp" "src/System.cpp" "src/GameLogic.cpp") # Define C++ compiler flags set(CMAKE_CXX_FLAGS "-std=c++14 -Wall -Wextra -Wpedantic -Wfatal-errors -Werror -pedantic-errors -fno-elide-constructors") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") set(CMAKE_CXX_FLAGS_RELEASE "-O3") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O3") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") if(CMAKE_BUILD_TYPE STREQUAL "debug" OR CMAKE_BUILD_TYPE STREQUAL "relwithdebinfo") add_definitions("-DDEBUG") else() add_definitions("-DNDEBUG") endif() add_definitions("-DVERSION=\"${TARGET_VERSION}\"") add_executable(${TARGET_NAME} ${SRCS}) target_link_libraries(${TARGET_NAME} OpenGL::OpenGL OpenGL::GLU ${ASSIMP_LIBRARIES} ${GLEW_LIBRARIES} ${GLUT_LIBRARIES} ${SDL2_LIBRARIES})