-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
76 lines (62 loc) · 3.03 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
cmake_minimum_required(VERSION 3.25.1)
project(raptorxx VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (CMAKE_CXX_STANDARD LESS 23)
message(FATAL_ERROR "At least C++23 required but have ${CMAKE_CXX_STANDARD}")
endif ()
if (MSVC)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_options(/W3 /WX /wd4251 /experimental:module /std:c++latest /RTC1)
else ()
add_compile_options(/W3 /WX /wd4251 /experimental:module /std:c++latest /O2)
endif ()
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(-Wall -Wextra -pedantic -std=c++23) # -Werror => this is too strict for now - causes break when building CSV library
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
add_compile_options(-Wall -Wextra -pedantic -std=c++2b) # -Werror => this is too strict for now - causes break when building CSV library
else ()
message(WARNING "You are using an unsupported compiler! Compilation has only been tested with MSVC, GCC and Clang.")
endif ()
include(CTest)
enable_testing()
configure_file(
"src/ProjectConfig.h.in"
"${PROJECT_BINARY_DIR}/ProjectConfig.h"
)
set(BUILD_SHARED_LIBS ON)
set(CPM_DOWNLOAD_LOCATION "${CMAKE_SOURCE_DIR}/cmake/CPM.cmake")
# Download GTFS Switzerland
include(${CMAKE_SOURCE_DIR}/CMake/DownloadAndUnzip.cmake)
set(ZIP_URL "https://opentransportdata.swiss/dataset/7cc000ea-0973-40c1-a557-7971a4939da3/resource/756b62d2-3b63-4e74-8693-03212eeb0fac/download/gtfs_fp2024_2024-09-23.zip")
set(UNZIP_DIR "${CMAKE_SOURCE_DIR}/resources/gtfs_switzerland")
download_and_unzip(${ZIP_URL} ${UNZIP_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/output/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/debug)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/release)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/release)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/release)
# SOURCE
add_subdirectory(src/logging)
add_subdirectory(src/geometry)
add_subdirectory(src/schedule)
add_subdirectory(src/gtfsRaptorConfig)
add_subdirectory(src/raptor)
# TESTS
add_subdirectory(test/test_raptor)
add_subdirectory(test/test_geometry)
add_subdirectory(test/test_schedule)
add_subdirectory(test/test_gtfsRaptorConfig)
# BECHMARKS
add_subdirectory(benchmark/benchmark_schedule)
add_subdirectory(benchmark/benchmark_gtfsRaptor)
# TEST COMMANDS
add_test(NAME GtfsRaptorConfigTest COMMAND "gtfsRaptorConfig_tests")
add_test(NAME ScheduleTest COMMAND "schedule_tests")
add_test(NAME RaptorTest COMMAND "raptor_tests")
add_test(NAME geomety COMMAND "geometry_tests")
add_test(NAME TestK2dTree COMMAND "geometry_tests")