add_custom_command(
    OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp.c++ ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp.h
    COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && capnp compile -oc++ interface.capnp && cd -
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp
    COMMENT "Generating source code from Cap'n Proto"
)
add_custom_target(RunGenerator
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp.c++ ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp.h
    COMMENT "Checking if re-generation is required")
add_library(capnproto STATIC ${CMAKE_CURRENT_SOURCE_DIR}/interface.capnp.c++ serverimplementation.cpp)
target_link_libraries(capnproto capnp kj capnp-rpc kj-async classes)
add_dependencies(capnproto RunGenerator)
