Aston Villa smash Championship transfer record by signing Fulham star
The 29-year-old, previously linked with a move to Norwich City, has agreed a four-year contract after Villa had a bid accepted on Wednesday.
McCormack, who has never played in the Premier League, joined Fulham in 2014 from Leeds United for a reported £11m.
He went on to score 38 league goals in 89 appearances for the Whites, and has also been capped 13 times by Scotland.
Villa say the deal equals the second-highest fee the club has paid in their history - matching the sum invested to bring Stewart Downing from Middlesbrough in 2009.
The £18m paid to Sunderland in January 2011 for former England striker Darren Bent remains the club record.
"He is a player whose goalscoring record has been excellent everywhere he has been and we feel he can be an important addition," said manager Roberto di Matteo.