-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
46 lines (38 loc) · 2.52 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
cmake_minimum_required(VERSION 3.16)
project(fnad VERSION 0.0.1)
# abilita il supporto per i test, tra cui l'opzione BUILD_TESTING usata sotto
include(CTest)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/modules)
# richiedi l'uso di C++17, senza estensioni non-standard offerte dal compilatore usato
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
# abilita warning
string(APPEND CMAKE_CXX_FLAGS
" -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wformat=2"
" -Wundef -Wshadow -Wcast-align -Wunused -Wnull-dereference"
" -Wdouble-promotion -Wimplicit-fallthrough -Wextra-semi -Woverloaded-virtual"
" -Wnon-virtual-dtor -Wold-style-cast")
# abilita address sanitizer e undefined-behaviour sanitizer in debug mode
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fsanitize=address,undefined -fno-omit-frame-pointer")
string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " -fsanitize=address,undefined -fno-omit-frame-pointer")
# richiedi SFML, versione 2.5, e tmxlite
# le dipendenze vengono identificate automaticamente
find_package(SFML 2.5 COMPONENTS graphics REQUIRED)
find_package(tmxlite)
add_executable(fnad main.cpp src/map/map.cpp src/background/background.cpp src/game/game.cpp src/epidemic/epidemic.cpp src/entities/character/character.cpp src/entities/enemy/enemy.cpp src/entities/entity/entity.cpp src/spawner/spawner.cpp src/key/key.cpp)
target_link_libraries(fnad PRIVATE sfml-graphics)
target_link_libraries(fnad PRIVATE tmxlite)
# se il testing e' abilitato...
# per disabilitare il testing, passare -DBUILD_TESTING=OFF a cmake durante la fase di configurazione
if (BUILD_TESTING)
# aggiungi l'eseguibile all.test
add_executable(all.test test/all.test.cpp)
target_sources(all.test PRIVATE src/entities/enemy/enemy.test.cpp src/entities/character/character.test.cpp src/epidemic/epidemic.test.cpp src/map/map.test.cpp src/spawner/spawner.test.cpp src/key/key.test.cpp src/entities/entity/entity.test.cpp src/background/background.test.cpp)
target_sources(all.test PRIVATE src/entities/character/character.cpp src/entities/enemy/enemy.cpp src/entities/entity/entity.cpp src/epidemic/epidemic.cpp src/map/map.cpp src/spawner/spawner.cpp src/key/key.cpp src/background/background.cpp)
target_link_libraries(all.test PRIVATE sfml-graphics)
target_link_libraries(all.test PRIVATE tmxlite)
# aggiungi l'eseguibile all.test alla lista dei test
add_test(NAME all.test COMMAND all.test)
endif ()