CMakeLists.txt 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. cmake_minimum_required(VERSION 3.0)
  2. # Build verbosity: on / off.
  3. set(CMAKE_VERBOSE_MAKEFILE off)
  4. # C++ Standard.
  5. set(CMAKE_CXX_STANDARD 14)
  6. set(CMAKE_CXX_STANDARD_REQUIRED True)
  7. # Add cotire
  8. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake")
  9. include(cotire)
  10. # Project Information.
  11. project(V-Gears)
  12. set(CMAKE_PACKAGE_ICON v-gears.png)
  13. set(VGEARS_VERSION_MAJOR 0)
  14. set(VGEARS_VERSION_MINOR 1)
  15. set(VGEARS_VERSION_PATCH 18)
  16. set(VGEARS_VERSION ${VGEARS_VERSION_MAJOR}.${VGEARS_VERSION_MINOR}.${VGEARS_VERSION_PATCH})
  17. # Project options.
  18. option(BUILD_INSTALLER "Build the V-Gears-Installer" TRUE)
  19. option(BUILD_TESTS "Build the unit tests" FALSE)
  20. option(MULTITHREADING "Enable multithreading" FALSE)
  21. # Generate version header.
  22. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h)
  23. # Hanle build type
  24. if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
  25. # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
  26. # differentiation between debug and release builds.
  27. set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: None (CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
  28. endif()
  29. #Output directories
  30. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/lib)
  31. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/lib)
  32. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
  33. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug/lib)
  34. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug/lib)
  35. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug)
  36. # Enable Visual Studio solution "folders".
  37. SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
  38. # Global configurations.
  39. set(CMAKE_DEBUG_POSTFIX "_d")
  40. if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  41. set(CMAKE_CURRENT_SOURCE_DIR
  42. "${VGEARS_SOURCE_DIR}/data" CACHE PATH "V-Gears install prefix" FORCE
  43. )
  44. endif()
  45. # First, build external libraries (luabind and luajit).
  46. add_subdirectory(lib)
  47. # Build v-gears (and, if requested, the installer).
  48. add_subdirectory(src)
  49. # If requested, build tests
  50. if(BUILD_TESTS)
  51. add_subdirectory(test)
  52. endif()
  53. # TODO: Generate Installer (.msi, .deb, .appImage...)