To emulate the live preview, there is a neat piece of software called entr[1], from their main page, you can do something like:

    ls | entr make
And whenever you save a change, the build is triggered and the preview is updated.

[1]: http://eradman.com/entrproject/

The pipeline approach here is interesting, but it seems you'd be on your own for filtering out changes in the build directory, etc. I typically use watchexec [1] for this.

    watchexec make
By default, watchexec will filter out changes in files based on `.gitignore`.

[1]: https://github.com/watchexec/watchexec