summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 98258c789801d6a0645db80b4e1f3c8fd8b7c43a (plain) (blame)
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
cmake_minimum_required(VERSION 3.15)

project(cait)

string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER)

set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

option(${PROJECT_NAME_UPPER}_BUILD_BINARY "Build ${PROJECT_NAME} binary" ON)

if(MSVC)
  add_compile_options(/Wall)

  add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
else()
  add_compile_options(-Weverything -Wno-c++98-compat)
endif(MSVC)

file(GLOB LIB${PROJECT_NAME_UPPER}_SOURCES ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}/*.cc)

list(REMOVE_ITEM LIB${PROJECT_NAME_UPPER}_SOURCES ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.cc)

add_library(lib${PROJECT_NAME} OBJECT ${LIB${PROJECT_NAME_UPPER}_SOURCES})

if(${PROJECT_NAME_UPPER}_BUILD_BINARY)
  add_executable(${PROJECT_NAME} ${PROJECT_NAME}/${PROJECT_NAME}.cc)

  target_link_libraries(${PROJECT_NAME} PRIVATE lib${PROJECT_NAME})

  install(TARGETS ${PROJECT_NAME})
endif(${PROJECT_NAME_UPPER}_BUILD_BINARY)