I've been doing C++ cross-platform development for SalemGDK, and I would like to dedicate a bit of my time to bitch about how much I hate windows. This is the entirety of this thread, just a wall of text about me bitching about how much i hate windows.
Have you ever developed a cross platform application in a language where you need to link libraries like C or C++? It's all fun and games until you get to windows. On OsX and Linux, it's simple, so let me tell you the steps to linking Boost and SFML in C++ on Linux and OsX
On OsX:
Download and install brew with a single bash command found on their home page.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Once brew is installed, go ahead and install boost and sfml:
brew install boost
brew install sfml
Now in your CMake, you just gotta reference the libraries because your compiler already knows where to look for these. So, ya add a couple lines to your CMAKE, telling it which parts of Boost and SFML to use and you call a simple function basically FindBoost and FindSFML and you're done.
On Linux:
Practically the same as OSX. except guess what? Linux already has a package manager!
if you're on arch:
sudo pacman -S boost
sudo pacman -S sfml
sudo pacman -S lib32-glibc (because you need a dependency)
Or if you're on ubuntu:
sudo apt install libboost-dev
sudo apt install libsfml-dev
sudo apt install lib32-glibc
Guess what, if you started with OSX your cmake shit's already in there! Cool
On Macrosawft GarbageOs
Spend hours trying to figure out how to get visual studio to use CMake and your MingW compiler. You need to compile Boost and SFML for that specific build of MingW. You get an error after finally getting it all compiled and linked realizing that you compiled something wrong. You understand that from this point on your life is going to be absolutely miserable, so you give up, go have a drink, come back weeks later and decide, shit let's just get this jazz working with VisualC. So you go out, you download the zip archive of the library files you need from the interwebs, link everything in, realize that Boost does not have released binaries for Visual C++, and you need the compiled versions because the header only libraries don't support a part of the library you need, and if you tried to install from Nuget, fuck you because those are all header only anyways, so now you need to compile boost for your specific version of visual C++, you finally get through it, then you realize the output build directory is insane, so you write up a python script to copy the libraries you need, otherwise it would take you an hour to sort through the cluster fuck of files they have. You finally get it all copied and linked up, you finally build your library and you go to setup your application to use the library you've been trying to build, and for some reason you need a .lib file for symbols AND a .dll file... plus you still need to include your header files and you wonder what the point of the .lib file is if its supposed to resolve your symbols... which are defined in your headers. Then you read an article telling you that you have to specify all the functions and classes you want your dll to include and export for you, and my god why is there so much shit to this?!
And by the way you remember how easy it was to link libraries in cmake? Yeah in visual studio for whatever reason you gotta go into the project settings, setup your preprocessor definitions, get rid of some stupid flag for their stupid precompiled headers, like i don't want to use that trash, quit trying to force your garbage implementations on me. Then you define every single one of the .lib files you need, and include a list of where all these libraries are located (mind you on linux they all go to this one place called the fucking Libraries folder, god forbid windows had one!), and jesus christ, can we all stop using windows?
Dear Macroshit,
Like what the hell is up with your system directory structure, and why cant you decide what should go where? Why is there no single place to put library files and applications? Why you gotta use \ (the standard "escape" character) instead of / for your directories? Your console commands are trash and your console applications are just ugly as hell. Why is it so much work to modify path variables, and how come when an installer says "add to path variable" it rarely ever works?... Hold on windows is forcing me to update... Why don't you have a package manager? Why do some applications get installed directly to "appdata" and some get installed to "program files". Why don't you have a package manager? Your desktop environment is ugly, and why the FUCK does GarbageOS come with candy crush saga? I don't even think my grandmother plays Candy Crush Saga! Why do you even come with crapware? You charge an arm and a leg for your operating system and not to mention you sell user data, like honest to god why do you need to piggy back crapware? Seriously, that package manager... Your operating system is the single least most secure thing, hell i don't even need an antivirus on unix based OS's. Why do i have.. **Explorer.exe has stopped responding** .. two different consoles (CMD and Powershell). Like, no really, Why don't you have a package manager? Oh and don't even get my started with edge and the edge development team. Edge can't even keep up with web standards, it's already turning into the next version of IE. If it weren't for the gaming market and their target platform, you'd be dead, and i hope you die soon.
Sincerely,
I fucking hate you and your terrible operating system.
P.S. GET A FUCKING PACKAGE MANAGER!