I currently maintain a legacy C+ app that runs on x86/x86_64/armhf linux, all 4 android archs and x86/x86_64 windows.
The linux compilation phase takes 1m, whereas on windows (using MinGW) it takes 10m. It’s not the end of the world, but would the MS compiler be faster? Better?
From the perspective of the CI guy: Just cross compile from Linux.
You can get the Windows compilers for free - just CLI build tools are enough for your case. The setup can be a bit messy, though. Also, if it’s a GCC only codebase so far there’s a decent chance it has constructs which will not compile on MSVC. It will not necessarily be faster, though.
if it’s a GCC only codebase so far there’s a decent chance it has constructs which will not compile on MSVC
Yeah in recent experiments i thing i’ve hit that wall… next experiment: mingw on linux.
MSVC is probably about the same as mingw. Compiling stuff on Windows is slower because compiling creates a lot of short lived processes, and process creation is a lot more expensive on Windows NT.
Do consider that Microsoft is not your friend and may pull evil legal and pricing tricks that fuck you over down the road. For instance, something like what Unity tried to pull recently.
Hell will freeze over before GCC or MinGW tries to pull something like that. (And even if they tried, someone could fork GCC or MinGW to ensure a free version remains available.)
If you’re supporting windows anyway you should use their tooling. This isn’t controversial, MSVC is a good compiler supported by good developers. I find MSVC more reliable than MinGW on windows as well. I recommend maintaining a single CMake project so that you can switch between compilers and build tools.
You could also cross compile for windows from linux, iirc there are mingw packages on linux.
there’s a free trial and there’s the build tools that can run from the command line or vscode. Why not give it a try?
https://code.visualstudio.com/docs/cpp/config-msvc https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022