This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Is there some particular context in which you see these defined? In general, you should give to QA exactly what you intend to deliver as a product. For example, the debug flag to the compiler should be off. Also, paths, classpaths, and libraries should be the same as will be used by the customer. On the other hand, a dev build can be a bit looser. You can (and probably should) keep debugging and assertions enabled. The paths can be set up to take advantage of the development environment, rather than putting together a full installation package.