-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
40 lines (31 loc) · 1.29 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
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
set(CMAKE_VERBOSE_MAKEFILE true)
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
option(ENABLE_EXTRA_CHECKS "Enabel Additional Warnings and Sanitizer Checks" false)
if (ENABLE_EXTRA_CHECKS)
message("extra checks are on")
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
endif()
project(yall LANGUAGES CXX)
# Add libraries
find_package(Catch2 REQUIRED)
add_library(read lib/read.cpp)
target_include_directories(read PUBLIC include)
add_library(eval lib/eval.cpp)
target_include_directories(eval PUBLIC include)
add_executable(lisp app/main.cpp)
target_include_directories(lisp PUBLIC include)
target_link_libraries(lisp read eval Catch2::Catch2)
add_executable(test_read app/tests_read.cpp)
target_include_directories(test_read PUBLIC include)
target_link_libraries(test_read read Catch2::Catch2)
add_executable(test_eval app/tests_eval.cpp)
target_include_directories(test_eval PUBLIC include)
target_link_libraries(test_eval eval read Catch2::Catch2)
install(TARGETS lisp DESTINATION bin)
install(PROGRAMS demo DESTINATION bin)