| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #
- # EnTT
- #
- #
- # Building in-tree is not allowed (we take care of your craziness).
- #
- if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
- message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the source code and call cmake from there. Thank you.")
- endif()
- #
- # Project configuration
- #
- project(entt)
- cmake_minimum_required(VERSION 3.4)
- if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE Debug)
- endif(NOT CMAKE_BUILD_TYPE)
- set(PROJECT_NAME "entt")
- set(PROJECT_VERSION_MAJOR 1)
- set(PROJECT_VERSION_MINOR 0)
- set(PROJECT_VERSION_PATCH 0)
- set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
- set(SETTINGS_ORGANIZATION "Michele Caini")
- set(SETTINGS_APPLICATION ${PROJECT_NAME})
- set(PROJECT_AUTHOR "Michele Caini")
- set(PROJECT_YEAR_COPYRIGHT "2017")
- set(PROJECT_AUTHOR_EMAIL "michele.caini@gmail.com")
- set(PROJECT_BUILD_MESSAGE ${PROJECT_NAME} " v" ${PROJECT_VERSION} " (" ${CMAKE_BUILD_TYPE} ")")
- set(COPYRIGHT_BUILD_MESSAGE "Copyright (c) " ${PROJECT_YEAR_COPYRIGHT} " " ${PROJECT_AUTHOR} " <" ${PROJECT_AUTHOR_EMAIL} ">")
- message("*")
- message("* " ${PROJECT_BUILD_MESSAGE})
- message("* " ${COPYRIGHT_BUILD_MESSAGE})
- message("*")
- #
- # Compile stuff
- #
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall")
- # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-Wextra -Weffc++")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -DDEBUG")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DRELEASE")
- add_definitions(
- -DPROJECT_NAME=${PROJECT_NAME}
- -DPROJECT_VERSION=${PROJECT_VERSION}
- )
- #
- # CMake configuration
- #
- set(PROJECT_CMAKE_MODULES cmake/modules)
- set(PROJECT_BUILD_DIR build)
- set(PROJECT_DEPS_DIR deps)
- set(PROJECT_SRC_DIR src)
- set(PROJECT_TEST_DIR test)
- set(PROJECT_RUNTIME_OUTPUT_DIRECTORY bin)
- set(
- CMAKE_MODULE_PATH
- ${CMAKE_MODULE_PATH}
- ${CMAKE_SOURCE_DIR}/${PROJECT_CMAKE_MODULES}
- )
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_RUNTIME_OUTPUT_DIRECTORY})
- #
- # Enable test support using ctest
- #
- include(CTest)
- #
- # Referenced packages
- #
- set(THREADS_PREFER_PTHREAD_FLAG ON)
- find_package(Threads REQUIRED)
- find_package(GoogleTest)
- #
- # Referenced directories and targets
- #
- if(${GOOGLETEST_FOUND})
- add_subdirectory(${PROJECT_TEST_DIR})
- endif(${GOOGLETEST_FOUND})
- #
- # I use QtCreator and I need the lines below, so do not ask. :-)
- #
- file(
- GLOB_RECURSE PROJECT_FILES FOLLOW_SYMLINKS
- *.txt *.c *.cpp *.hpp *.h *.in *.cmake *.sh *.md AUTHORS LICENSE
- )
- add_custom_target(
- QTCREATOR_FALLBACK ALL
- COMMENT "Feel free to ignore this target, but please do not remove it."
- SOURCES ${PROJECT_FILES}
- )
|