-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
86 lines (73 loc) · 2.23 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
77
78
79
80
81
82
83
84
85
86
cmake_minimum_required(VERSION 3.1)
project(InfinityTrain)
# Compiler
if (MSVC)
add_compile_options(
/bigobj
/Wall
/sdl
/guard:cf
/guard:ehcont
/CETCOMPAT
/fsanitize=address
/analyze
)
else()
add_compile_options(
-Wall
-Wextra
-Wfloat-equal
-Wundef
-Wshadow
-Wpointer-arith
-Wcast-align
-Wstrict-overflow=5
-Wwrite-strings
-Wcast-qual
-Wswitch-default
-Wconversion
-Wunreachable-code
)
endif()
# Cmake
list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
set(CMAKE_CXX_STANDARD 17)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif (NOT CMAKE_BUILD_TYPE)
# Setup
set(CODE_DIR ${CMAKE_SOURCE_DIR}/code)
set(ASSETS_DIR ${CMAKE_SOURCE_DIR}/assets)
set(DOCS_DIR ${CMAKE_SOURCE_DIR}/docs)
file(GLOB_RECURSE SOURCE LIST_DIRECTORY true ${CODE_DIR}/*.cpp)
add_executable(${PROJECT_NAME} ${SOURCE})
target_include_directories(${PROJECT_NAME} PRIVATE ${CODE_DIR})
# Copy assets to build folder
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSETS_DIR}/ $<TARGET_FILE_DIR:${PROJECT_NAME}>)
# Packages
set(SFML_STATIC_LIBRARIES TRUE)
find_package(SFML 2.5 COMPONENTS graphics windows audio system REQUIRED)
find_package(Ogg REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(spdlog REQUIRED)
find_package(exprtk REQUIRED)
target_link_libraries(${PROJECT_NAME} sfml::sfml Ogg::ogg nlohmann_json::nlohmann_json spdlog::spdlog exprtk::exprtk)
target_include_directories(${PROJECT_NAME} PRIVATE ${SFML_INCLUDE_DIR} ${exprtk_INCLUDE_DIR} ${nlohmann_json_INCLUDE_DIR} ${spdlog_INCLUDE_DIR} ${Ogg_INCLUDE_DIR})
# Doxygen
if (BUILD_DOXYGEN)
option(BUILD_DOC "Build documentation" ON)
find_package(Doxygen REQUIRED dot)
if (DOXYGEN_FOUND)
set(README ${CMAKE_SOURCE_DIR}/README.md)
set(DOXYGEN_OUTPUT_DIRECTORY ${DOCS_DIR})
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE ${README})
doxygen_add_docs(
doxygen
${CODE_DIR} ${README}
COMMENT "Generate docs")
else(DOXYGEN_FOUND)
message("Doxygen not found, need to be installed to generate the doxygen")
endif(DOXYGEN_FOUND)
endif(BUILD_DOXYGEN)