Just as you shouldn’t write a perfect protagonist who is good at everything and always makes the right choice, don’t make your antagonist perfectly evil. Everyone has something not-terrible about them. I don’t mean anything like “Hitler loved kittens.” He probably loved them for breakfast. I’m not talking about real-world villains, and I’m not suggesting that your antagonist be loveable. I’m merely suggesting that they be as human as your protagonist. Your reader isn’t dumb. He knows who to root for in your story. You don’t have to instruct him on how to loathe the antagonist. Depending on what sort of book you’re writing the antagonist isn’t necessarily even a “bad guy.” It’s merely a character or entity who is at cross-purposes with your protagonist. Maybe they are in competition for the same job or trophy or piece of ass. If you make your antagonist as fully human and relatable—though maybe not as likeable—as your protagonist you are doing something right. At the end of your tale your reader can feel both happiness for the protagonist and feel a little bit sorry for the antagonist too.
If your antagonist is a legit villain—a serial killer, say, or just a massive asshole who enjoys upsetting other people—then it’s completely within bounds to lead your reader to hating them. To reviling them and wishing for nothing so much as their death, incarceration, or some other less severe comeuppance. (Removal from the cheerleading squad?) But don’t make them a cardboard cutout. A sneer and a mustache twirl. Or go the Dan Brown route and give them full body tattoos or albinism. Seriously, if you’re going to commit super-crimes you kinda have to blend in. To humanize them is to make them interesting. And that’s compelling to read about. One of the most fascinating characters in fiction is Hannibal Lector. Charming, literate, talented and cultured, he’s also an unrepentant monster. Whatever else, he’s never boring.