> On 15 Apr 2020, at 18.55, Glen Huang <[email protected]> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/2C480CE6-CF9A-42FF-B1C5-CA5CE8517055%40gmail.com.