There a flavor of CUDA runtime libraries that binds at runtime, so you can have a single binary that runs with CUDA and without it. I did this at work.
Obviously you need to check if CUDA is available before trying to execute kernels, or it will error out.