cURL / Mailing Lists / curl-library / Single Mail

curl-library

RE: Visual Studio Project Files

From: Steve Holme <steve_holme_at_hotmail.com>
Date: Mon, 7 Apr 2014 23:31:00 +0100

On Mon, 7 Apr 2014, Guenter wrote:

> > I have been saying on here for a long, long time that I would share
> > my Visual Studio project
>
> hmmm, do you really think thats all needed?

Not needed, but a nice addition for the following reasons:

> only very few folks really work on developing the library or curl tool
> itself, so why should they prefer project files over the nmake files?

That’s one of things I hope that these project files might help change a little. If someone wants to compile against curl on Windows, they tend to download the binaries, but if they have a problem or want to tweak something or even enhance/add something it is quite difficult to "get involved".

I'm a Windows programmer through and through, with 20 odd years spent as a C and C++ developer yet I don't have any Linux experience :( I keep saying I'll set up a VM and learn but I never seem to get round to it. Not only that but I don't really know my way round makefiles and using nmake either so this is very alien to me as well.

It was only through using curl at work that I got involved and spent the time developing a whole bunch of project files for VC7.1 through VC10 as we needed to support various Visual Studio targets - mainly because some of the third party libraries we integrate with are built using the dynamic versions of Microsoft's runtime libraries, which can cause a lot of grief (aka DLL hell). I also did the same for some of the other libraries we use such as Win32-pthreads and PCRE - I've just not got round to submitting the project files back to those projects yet. Fortunately Xerces-c and Xalan already have their own project files using the directory structure that I have applied here to my files ;-)

> Which benefit would it have?
>
> - AFAIK it was all the time possible to just import our distributed nmake
> files and create project files from them ...

It is... but a) I have never done this myself, and b) I believe that it only imports the build settings and that you still have to manually add the source files yourself. This means that every time the source filenames change or files are added to or removed from the distribution the user has to update their project files as well, rather than having an out of the box experience. If I am wrong on this then my apologies.

> - AFAIK most of the VS Express versions cant deal with project files, so
> the benefit (if any) would only apply to those using the commercial
> versions of the M$ compilers & tools ...

I don’t know which versions had this limitation - certainly some of the older versions restrict 64-compilation and the editing of resource files but I wasn't aware of any project file limitation. I would have to install the Express Editions to check this out and give a firm response although I think Jan mentioned in his response that some of the newer versions have lifted this restriction now.

> - its much work to maintain all those separate project files (even if you
> volunteer to do it - there might be times when you're swamped with
> other work);

I don't believe so. We already provide very limited VC6 and VC8 project files in the VS directory which my files improve on. I have templated the files so all configurations and build settings are in the .tmpl file (basically this file is a .vcproj file without the file list in!) and I have created a batch file which adds the file list. This file could be included in the repo but I would like to write a shell / Perl script that does this as part of Daniel's release process - that way we can provide an easy to use out of the box experience for Windows developers ;-)

Yes it is possible to import those VC6 and VC8 files into newer versions of Visual Studio but there are settings in the newer versions that we could take advantage of [1] if we supplied these files.
 
> I believe it would be better to use a similar approach as what we did
> up to now with the nmake files: use one template and create the
> different versions from the template with some sed rules ...

Whilst the .sln and .vcproj files for VC7 and VC7.1, as are the VC8 and VC9 ones, they are completely different to the .dsw and .dsp files of VC6 and yet again Microsoft has completely changed the format for VC10 with a different .sln and a new .vcxproj file. I can't speak for VC11 and VC12 yet as I haven't ported my project files to those - I hope to do that this week.

Once I have the initial files ready - if there is any way of templating them even more that would be cool ;-)

Sorry for the lengthy response but I wanted to explain my rational fully for wanting to add these files.

Kind Regards

Steve

[1] - http://curl.haxx.se/mail/lib-2013-10/0174.html

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2014-04-08