The best practice is to create a cross platform library. If you can do this, I would use static libraries. Then create a variety of applications for the specific needs of your platform.
Itβs better to βpullβ the functionality out of the library, as opposed to writing extensions on top of the library. Thus, you can choose and choose what is suitable for the platform.
I would look at Qt for the GUI. This is by far the best toolkit I've used.
source share