You can make them by hand using wrappers for different programming languages, manual implementation, or use a SDK (like fmiCpp). Using a SDK you avoid reimplementing the common functions. It is also possible to make them from tools. Several modelling tools support exporting a simulation model to an FMU. Have a look here for an overview of the different tools that support the FMI standard.