Build your project, run the tests, create a release tarball, unpack it with read-only sources, build it and run the tests. This should be the minimum standard for every build system, yet it seems hard to reach.
It seems to add far too much complexity to projects. The build system has a tendency to be more complex than the actual projects that it's being used to build.