cmake_minimum_required(VERSION 3.25) project(pdptw LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # link time optimisation (LTO) for release and release with debug info builds set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Finding dependencies find_package(CLI11 REQUIRED) find_package(nlohmann_json REQUIRED) find_package(spdlog REQUIRED) add_executable(pdptw src/mains/main.cpp src/mains/main_interface.cpp src/input/data.cpp src/input/location.cpp src/input/pair.cpp src/input/pdptw_data.cpp src/input/time_window.cpp src/input/json_parser.cpp src/lns/solution/route.cpp src/lns/solution/solution.cpp src/lns/constraints/constraint.cpp src/lns/constraints/capacity/capacity_constraint.cpp src/lns/constraints/time_window/time_window_constraint.cpp src/lns/modification/pair/insert_pair.cpp src/lns/modification/pair/remove_pair.cpp src/lns/modification/route/insert_route_with_pair.cpp src/lns/modification/route/insert_route.cpp src/lns/modification/route/remove_route.cpp src/output/solution_checker.cpp src/lns/operators/sorting_strategy.cpp src/lns/operators/destruction/random_destroy.cpp src/lns/operators/generators/enumerate.cpp src/lns/operators/generators/modification_generator.cpp src/lns/operators/reconstruction/list_heuristic_insertion.hpp src/lns/operators/selector/operator_selection.cpp src/utils.cpp ) target_link_libraries(pdptw PRIVATE CLI11::CLI11 nlohmann_json::nlohmann_json spdlog::spdlog) target_include_directories(pdptw PUBLIC ${CMAKE_SOURCE_DIR}/src)