Does exposing the whole object to the "client" project somehow trigger this requirement?

No, now I've got it:

In file included from ../../AtomRemote-all/AtomRemote-mobile/main.cpp:5:
In file included from ../../AtomRemote-all/AtomRemote/DBManager.h:10:
../../AtomRemote-all/AtomRemote/AtomSystemDAO.h:4:10: fatal error: 'QSqlDatabase' file not found

You just need to read the error message carefully.

You include QSqlDatabase in your DBManager.h, which in turn is included from your app project. Therefore you get the need to find the Qt database classes in your include path.

Refactor your lib to get rid of that. E.g. you can use the following forward declaration in your header file: