cmake_minimum_required(VERSION 3.18) 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) find_package(PkgConfig) pkg_check_modules(BOTAN2 REQUIRED botan-2) 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}) target_include_directories( ${TARGET_NAME}_client PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/include ${BOTAN2_INCLUDE_DIRS} )