> On 15 Apr 2020, at 18.55, Glen Huang <hey....@gmail.com> wrote: > > I have a makefile where upon a new go binary being built, it builds some > other stuff that is not go related. > > The go binary is unconditionally built with a FORCE prerequisite, so the go > build command always runs, but that command always updates the output binary, > which leads to downstream being unnecessarily built. > > Is there a way to tell go not to touch the output file if it builds purely > from the cache? > > Currently it prevents me from using a makefile, and I don't really feel like > sidestepping go's cache system by manually listing all go files and have the > makefile functions as a cache, besides, it's really difficult to correctly > list dependencies if the module is big and the binary being built only > depends on a subset. >
If the source code is not large enough, I think this will works, ``` CMD_SRC :=$(shell go list -f '{{ $$dir := .Dir }}{{ range .GoFiles }} {{ $$dir }}/{{.}} {{end}}' $(CMD_DIR)) your/binary: $(CMD_SRC) go build ./cmd/binary ``` -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/2C480CE6-CF9A-42FF-B1C5-CA5CE8517055%40gmail.com.