Files
reachability-algorithms/CMakeLists.txt
2024-08-03 13:14:07 +03:00

46 lines
1.8 KiB
CMake

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