To close this topic:
I went for a launcher approach:
Three binaries, one raw console app, one GUI app and one GUI launcher which allows you to start the program by running one of the other two executables. Selection either in its own GUI or silent by using args for the launcher itself, i.e.
myAppLauncher -gui
myAppLauncher -cli