Generally, anything you want to add to the Engine needs to become a “module”.
Take a look in the Engine/Source/ThirdParty folder - any one of those is an external library, either dynamically or statically linked.
For example, SDL2 is a full featured framework and if you look at its SDL2.Build.cs you can see how it is setup to find and connect to include and lib folders for each supported platform:
public class SDL2 : ModuleRules
{
public SDL2(TargetInfo Target)
{
Type = ModuleType.External;
...
string SDL2Path = UEBuildConfiguration.UEThirdPartySourceDirectory + "SDL2/SDL-gui-backend/";
string SDL2LibPath = SDL2Path + "lib/";
.....
PublicIncludePaths.Add(SDL2Path + "include");
....
PublicAdditionalLibraries.Add(SDL2LibPath + "Linux/" + Target.Architecture + "/libSDL2_fPIC.a");
....
Then somewhere in the Engine code, where you need this library (now a module), you would include a reference to it as a module name (in this case SDL2) in the Build.cs file.