set(assignment_HEADERS calc.hpp json_output.hpp proto_loader.hpp spatial_grid.hpp) set(assignment_SOURCES calc.cpp json_output.cpp proto_loader.cpp) add_library(assignment ${assignment_SOURCES} ${assignment_HEADERS}) set_target_properties(assignment PROPERTIES PUBLIC_HEADER "${assignment_HEADERS}") target_link_libraries(assignment PRIVATE proto ${PROTOBUF_LIBRARY} ) target_link_libraries(assignment PUBLIC nlohmann_json::nlohmann_json) add_executable(main main.cpp) target_link_libraries(main assignment)