cmake_minimum_required(VERSION 3.16) project(storage VERSION 0.0.1 LANGUAGES CXX) cmake_policy(SET CMP0076 NEW) cmake_policy(SET CMP0079 NEW) option(BUILD_STATIC "Builds library as static library" ON) option(BUILD_TESTS "Builds tests" ON) include(GNUInstallDirs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") if (NOT DEFINED QT_VERSION_MAJOR) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) endif() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core) qt_standard_project_setup() find_package(LMDB REQUIRED) # Build type if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) endif () set(SOURCES exceptions.cpp table.cpp database.cpp ) set(HEADERS database.h exceptions.h table.h table.hpp serializer.h serializer.hpp serializer_uint8.hpp serializer_uint16.hpp serializer_uint32.hpp serializer_uint64.hpp serializer_int8.hpp serializer_int16.hpp serializer_int32.hpp serializer_int64.hpp serializer_float.hpp serializer_double.hpp serializer_stdstring.hpp serializer_qstring.hpp ) if (BUILD_STATIC) add_library(storage STATIC ${SOURCES}) else () add_library(storage SHARED ${SOURCES}) endif() if (BUILD_TESTS) add_subdirectory(test) endif () set_target_properties(storage PROPERTIES PUBLIC_HEADER "${HEADERS}") target_include_directories(storage PRIVATE ${CMAKE_SOURCE_DIR}) target_include_directories(storage PRIVATE ${Qt${QT_VERSION_MAJOR}_INCLUDE_DIRS}) target_include_directories(storage PRIVATE ${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}) target_link_libraries(storage PRIVATE Qt${QT_VERSION_MAJOR}::Core ) target_link_libraries(storage PRIVATE lmdb) install(TARGETS storage RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/storage PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/storage )