A uber-shader(unified shader template) controlled by Macro from C++, include all shaders, then to different shader by Macro when compile

thanks a lot!
new to CUDA, and curious about how to manage CUDA with many different conditions.
in OpenGL/D3D shaders, uber-shader is an option, which like said above, use macro to control different conditions in just 1 shader, then it will be compiled to many shaders by different macro under different conditions.