46 lines
1.8 KiB
CMake
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
|