What the fuck is the deal with Visual Studio? I've been writing a small game using OpenGL and GLFW in Ubuntu, expecting it to be fairly easy to make it compile on Windows. I was stuck in Windows today (encoding a few DVDs, can't be arsed to find Linux equivalent software) so I figure why not do the port?
What a fucking nightmare this has been. Several gigs to download and install VS Express with Windows SDK. I couldn't get my pre-build script to run, so I gave up and just do it manually each time in a terminal. Adding the project files to git required me to turn off some of the patch validation. It refused to compile two .c files with the same name in different folders; I fought with it for hours before just fucking renaming one of them. It doesn't come with OpenGL extensions, nor can you include them normally; you have to wglGetProcAddress every fucking function you want to call. It absolutely refuses to link glfw statically; I had to use GLFW_DLL, which the documentation recommends not to do.
And now that I finally have the fucking thing compiling (and it actually does work), I can't see any log printouts. printf() successfully returns the number of characters printed, and the output goes... nowhere? I've got this Output widget in the IDE, which lets me select between Build, Build Order, and Debug, none of which contain my prints, to neither stdout or stderr. What the fuck?
And after all this, you know what? I've had to make almost no code changes to get it to work (glext, WinMain() and a few missing C99 features). It's not the code that's the problem, it's the goddamn development platform.
Do any of you /prog/riders actually like coding with VS on Windows? If so, what the fuck is wrong with you?
Name:
Anonymous2010-01-02 22:33
Only use VS with .NET, problem solved.
Name:
Anonymous2010-01-02 22:36
Get the DDK and use that. It uses a different building system which uses makefiles and a mix of "dirs/sources" files to do the building. It works quite well actually and it more flexible than VS.
Makefiles, at very best, don't get in your way. They don't improve your productivity any. At worst, they reduce your productivity by a large amount and are very error-prone.
I use Visual Studio and I have only one of the problems you describe. It's a massive pain in the ass getting project settings right - the linker and precompiled headers, etc., I'll grant that. That's something they should fix for VS2010, making project configuration less hellish.
The worst part is having to close the damn config dialog every time you make a change, then find out that it fails and have to cancel the build, then have to navigate to it again. GUIs are supposed to reduce redundant work.
>>11
Microsoft's usual way of ``improving´´ things is to build a GUI that allows you to configure all the stuff you used to configure in a text file, hide this away in some cryptic location, and reduce functionality. That is exactly how they will ``fix´´ project management.
The configuration dialogs are fairly straightforward, it's just a bitch to get it to do what you want. You have to worry about multithreaded debug, libraries matching, all sorts of retarded stuff which is a pain. At least, in the context of C++. There are switches that have no options in the GUI, like /MP and sometimes, the compiler ignores those switches randomly for things like /Yc, but not other times.
The configuration for C# is a lot simpler and far, far less "cryptic," as you call it. I'm actually quite optimistic about VS2010. They're doing a lot of hard work for it. It probably won't be the new VS6, but it will be better than 2008.
Name:
OP2010-01-06 0:10
>>19 the compiler ignores those switches randomly for things like /Yc
FUCK. You're fucking shitting me. I spent an hour trying to get that prefix header fucking bullshit to work, because compile times with windows.h were glacial. Lean and mean my fucking ass. I finally fixed it by deleting the whole project, recreating it from a wizard, including the prefix stuff in stdafx.h, and hoping I don't touch anything that breaks it.
Now you tell me the GUI ignores that switch. God fucking damn fuck on a stick.
>>20
No, the GUI gives you access to /Yc and /Yu, and their purpose is documented. I mean that there is no GUI option for /MP, and /MP ends up randomly discarding /Yc for seemingly no reason. That kind of thing makes me go "waaaaaaaaaaah?"
You'll have to check the properties of each file in your project/solution to make sure the compiled header settings are right for every fucking one, which is /Yu for every file that isn't the precompiled header and /Yc for the file that is the precompiled header.
Learning this took me a couple hours due to the incomprehensible compile errors and lack of discernible information from Google. Hopefully it helps somebody else.