Skip to content
Snippets Groups Projects
CMakeLists.txt 1.38 KiB
Newer Older
cmake_minimum_required(VERSION 3.18)
Lukas Güldenstein's avatar
Lukas Güldenstein committed
get_filename_component(TARGET_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" TARGET_NAME ${TARGET_NAME})

project(${TARGET_NAME})
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

find_package(Protobuf REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${TARGET_NAME}.proto)
Lukas Güldenstein's avatar
Lukas Güldenstein committed

find_package(PkgConfig)
pkg_check_modules(BOTAN2 REQUIRED botan-2)
Lukas Güldenstein's avatar
Lukas Güldenstein committed


set(server_sources src/server_main.cpp src/server.cpp src/game.cpp ${PROTO_SRCS} ${PROTO_HDRS})
add_executable(${TARGET_NAME}_server ${server_sources})
target_link_libraries(${TARGET_NAME}_server ${Protobuf_LIBRARIES})
target_link_libraries(${TARGET_NAME}_server ${BOTAN2_LIBRARIES} ${BOTAN2_LDFLAGS})
target_include_directories(
  ${TARGET_NAME}_server PRIVATE
  ${CMAKE_SOURCE_DIR}/src
  ${CMAKE_SOURCE_DIR}/include
  ${BOTAN2_INCLUDE_DIRS}
)

set(client_sources src/client_main.cpp src/client.cpp ${PROTO_SRCS} ${PROTO_HDRS})
add_executable(${TARGET_NAME}_client ${client_sources})
target_link_libraries(${TARGET_NAME}_client ${Protobuf_LIBRARIES})
target_link_libraries(${TARGET_NAME}_client ${BOTAN2_LIBRARIES} ${BOTAN2_LDFLAGS})
Lukas Güldenstein's avatar
Lukas Güldenstein committed
target_include_directories(
  ${TARGET_NAME}_client PRIVATE
Lukas Güldenstein's avatar
Lukas Güldenstein committed
  ${CMAKE_SOURCE_DIR}/src
  ${CMAKE_SOURCE_DIR}/include
Lukas Güldenstein's avatar
Lukas Güldenstein committed
)