I guess this depends on what you want to do. 

I've seen various level of GHC API usage in standalone applications, but it just depends on how much of the compiler pipeline you want to use. 

Their are ways to override the paths or provide stubs for programs ghc expects to be there. 

I've packaged API calls into shared libraries myself before,  in that case I was mostly accessing the compiler frontend.