cmake_minimum_required(VERSION 3.10) # Project name and version project(DynamicGraphAlgorithms VERSION 1.0) # Set the C++ standard to C++20 set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) # Enable compile commands generation set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Specify the include directories include_directories( ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/third_party/nanobench ${PROJECT_SOURCE_DIR}/third_party/doctest ) # Gather all header files from include/algorithm and include/graph directories file(GLOB_RECURSE ALGORITHM_HEADER_FILES ${PROJECT_SOURCE_DIR}/include/algorithm/*.h) file(GLOB_RECURSE GRAPH_HEADER_FILES ${PROJECT_SOURCE_DIR}/include/graph/*.h) file(GLOB_RECURSE RODITTY_ZWICK_HEADER ${PROJECT_SOURCE_DIR}/include/roditty_zwick.h) # Gather all source files from src directory file(GLOB_RECURSE SOURCE_FILES ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cc) # Debugging output to ensure files are found message(STATUS "Algorithm headers: ${ALGORITHM_HEADER_FILES}") message(STATUS "Graph headers: ${GRAPH_HEADER_FILES}") message(STATUS "Roditty-Zwick header: ${RODITTY_ZWICK_HEADER}") message(STATUS "Source files: ${SOURCE_FILES}") message(STATUS "Include directories: ${PROJECT_SOURCE_DIR}/include, ${PROJECT_SOURCE_DIR}/third_party/nanobench/src/include, ${PROJECT_SOURCE_DIR}/third_party/doctest/doctest") # Add the executable target if(SOURCE_FILES) add_executable(DynamicGraphAlgorithms ${SOURCE_FILES} ${ALGORITHM_HEADER_FILES} ${GRAPH_HEADER_FILES} ${RODITTY_ZWICK_HEADER}) else() message(FATAL_ERROR "No source files found. Please add at least one .cpp or .cc file to the src directory.") endif() # Link libraries if necessary (e.g., Boost, Abseil, etc.) # find_package(Boost REQUIRED) # Example for Boost # target_link_libraries(DynamicGraphAlgorithms Boost::Boost) # Link Boost