CMakeLists.txt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. cmake_minimum_required(VERSION 3.20)
  2. project(smartbotic-microbit VERSION 0.1.0 LANGUAGES CXX C)
  3. set(CMAKE_CXX_STANDARD 20)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. set(CMAKE_CXX_EXTENSIONS OFF)
  6. set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  7. if(NOT CMAKE_BUILD_TYPE)
  8. set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
  9. endif()
  10. option(BUILD_TESTS "Build tests" OFF)
  11. option(BUNDLE_DATABASE "Include smartbotic-database service in build" OFF)
  12. list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
  13. include(CompilerFlags)
  14. include(FindPackages)
  15. include(Dependencies)
  16. # Database submodule
  17. set(SMARTBOTIC_DB_BUILD_CLIENT ON CACHE BOOL "" FORCE)
  18. set(SMARTBOTIC_DB_BUILD_SERVICE ${BUNDLE_DATABASE} CACHE BOOL "" FORCE)
  19. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/smartbotic-database/CMakeLists.txt")
  20. add_subdirectory(external/smartbotic-database)
  21. else()
  22. message(FATAL_ERROR "smartbotic-database submodule not found. Run: git submodule update --init --recursive")
  23. endif()
  24. # Libraries
  25. add_subdirectory(lib)
  26. # Main application
  27. add_subdirectory(src)
  28. # Tests
  29. if(BUILD_TESTS)
  30. enable_testing()
  31. add_subdirectory(tests)
  32. endif()
  33. # Install
  34. include(GNUInstallDirs)
  35. install(TARGETS smartbotic-microbit RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
  36. install(DIRECTORY config/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/smartbotic-microbit
  37. FILES_MATCHING PATTERN "*.json")