Eglot does this out of the box with clangd. Also no need for extra packages for clang-tidy, it's integrated with within clangd so you get both linter warnings and build errors in the flymake window.
You may have to enable more checks as it is quiet enough by default. You may also have to enable clangd-tidy integration in clangd command line as I'm not sure it is out of the box. Something like this should work:
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
'((c-mode c++-mode c-ts-mode c++-ts-mode c-or-c++-ts-mode)
. ("clangd"
"--clang-tidy"))))