You can set an environment variable like CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER which will wrap all target commands, including tests. You could write a script here which does your setup, and then run the command it gave you as arguments.
You can tell cargo to rebuild your project when *.cu files are changed using rerun-if-changed (see here). Then, you can execute make from the build script.