cmake_minimum_required(VERSION 3.16) project(BinaryTable) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Optional: Enable function timing instrumentation via #define # To enable timing, either: # 1. Define SWEEPSTORE_ENABLE_TIMING=1 in your code before including timing.h # 2. Pass -DSWEEPSTORE_ENABLE_TIMING=1 to compiler # 3. Uncomment the line below: add_compile_definitions(SWEEPSTORE_ENABLE_TIMING=1) # Add include directories globally include_directories(${CMAKE_SOURCE_DIR}/src/Public) include_directories(${CMAKE_SOURCE_DIR}/src/Private) # Main executable with integrated binary table implementation add_executable(main src/Private/sweepstore/header.cpp src/Public/sweepstore/utils/helpers.h src/Private/sweepstore/structures.cpp src/Public/sweepstore/structures.h src/Private/sweepstore/sweepstore.cpp src/Public/sweepstore/sweepstore.h src/Public/sweepstore/concurrency.h src/Private/sweepstore/concurrency.cpp src/Public/sweepstore/utils/file_lock.h src/Private/sweepstore/utils/file_lock.cpp src/Private/sweepstore/utils/fd_pool.cpp src/Public/sweepstore/utils/file_handle.h src/Private/sweepstore/utils/file_handle.cpp src/Public/sweepstore/header.h src/Public/sweepstore/utils/timing.h src/Private/sweepstore/utils/timing.cpp src/Private/sweepstore/benchmark.cpp ) # Add include directories target_include_directories(main PRIVATE ${CMAKE_SOURCE_DIR}/src/Public) # Compiler Settings if(MSVC) target_compile_options(main PRIVATE /W4) else() target_compile_options(main PRIVATE -Wall -Wextra -pedantic) endif() # Link required libraries if(UNIX AND NOT APPLE) # Only link stdc++fs on Linux, not macOS target_link_libraries(main PRIVATE stdc++fs) endif() if(WIN32) target_link_libraries(main PRIVATE winmm) endif()