I’ve a Go module that uses a Rust library. This Rust library has C bindings, so that I can use
cgo to talk to Rust, which is nice. Everything works like a charm except the installation. Why? Because the Rust code needs to be compiled with
rustc. I may embed the dynamic library (
.dll), but it adds some complexity and I would like to avoid this approach in my current case.
I could tell the user to run
go get -d …, then run
go generate …, to finally run
go install, where
go generate would run the command to compile the Rust part (basically
cargo build --release). However, I want my Go module to be used as a dependency of any other Go module (it’s a library, not a binary), and in such a situation, it’s not possible to run
go generate automatically. If my understanding is correct:
go install runs
go build, which doesn’t run
So my question is: How can I run a command like
cargo build --release when my module is being installed by a user as a dependency (so like a regular
go get)? Is it even possible?