cmake_minimum_required(VERSION 3.20) project(smartbotic-microbit VERSION 0.1.0 LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) endif() option(BUILD_TESTS "Build tests" OFF) option(BUNDLE_DATABASE "Include smartbotic-database service in build" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(CompilerFlags) include(FindPackages) include(Dependencies) # Database submodule set(SMARTBOTIC_DB_BUILD_CLIENT ON CACHE BOOL "" FORCE) set(SMARTBOTIC_DB_BUILD_SERVICE ${BUNDLE_DATABASE} CACHE BOOL "" FORCE) if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/smartbotic-database/CMakeLists.txt") add_subdirectory(external/smartbotic-database) else() message(FATAL_ERROR "smartbotic-database submodule not found. Run: git submodule update --init --recursive") endif() # Libraries add_subdirectory(lib) # Main application add_subdirectory(src) # Tests if(BUILD_TESTS) enable_testing() add_subdirectory(tests) endif() # Install include(GNUInstallDirs) install(TARGETS smartbotic-microbit RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(DIRECTORY config/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/smartbotic-microbit FILES_MATCHING PATTERN "*.json")