From: Richard on
[Please do not mail me a copy of your followup]

"Liviu" <lab2k1(a)gmail.c0m> spake the secret code
<u1$8rlV0KHA.6068(a)TK2MSFTNGP04.phx.gbl> thusly:

>Curiosity, of course ;-) Well, sometimes more serious reasons, too.
>An example at random, in the v7.1 IDE there was one setting for
>"floating point consistency" with two choices. In the v8 IDE there
>were two related options with more choices under a different tab.
>Now suppose you had to convert an older project from v7.1 to v8,
>had only v8 installed, wondered what the old options were before,
>and how the "conversion wizard" magically mapped them. The old
>vcproj alone doesn't tell you that. A makefile makes it obvious.

OK, this is an example of the curiosity case.
What about the serious reason case?

I'm not trying to pick nits, I'm trying to understand why you would
need that. I've converted plenty of projects between different
versions of Visual Studio and never needed to know this.

If you just want to satisfy your curiosity, then you can figure it out
by looking at the command line section which shows the full
command-line and you can observe the differences in the vcproj and the
command-line as you change the GUI choices.

Yes, the mapping of vcproj settings to compiler switches is
undocumented insofar as the file format of a vcproj file is purposely
opaque. If you need to manipulate the settings, you are expected to
use the IDE (manual manipulation) or the automation API (programmatic
manipulation), not edit the text of the vcproj file.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/>

Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
From: Liviu on
"Richard" <legalize+jeeves(a)mail.xmission.com> wrote...
> "Liviu" <lab2k1(a)gmail.c0m> spake the secret code ... thusly:
>
>> Curiosity, of course ;-) Well, sometimes more serious reasons, too.
>> An example at random, in the v7.1 IDE there was one setting for
>> "floating point consistency" with two choices. In the v8 IDE there
>> were two related options with more choices under a different tab.
>> Now suppose you had to convert an older project from v7.1 to v8,
>> had only v8 installed, wondered what the old options were before,
>> and how the "conversion wizard" magically mapped them. The old
>> vcproj alone doesn't tell you that. A makefile makes it obvious.
>
> OK, this is an example of the curiosity case.
> What about the serious reason case?

That was actually an example of the "more serious" part.

> I'm not trying to pick nits, I'm trying to understand why you would
> need that. I've converted plenty of projects between different
> versions of Visual Studio and never needed to know this.

If you generally go by the builtin/wizard defaults, then you'll be safe,
since I guess that's one primary concern for MS when deciding and
testing the project conversion options.

> If you just want to satisfy your curiosity, then you can figure it out
> by looking at the command line section which shows the full
> command-line and you can observe the differences in the vcproj and the
> command-line as you change the GUI choices.

This, again, is assuming that you have the full environment installed
for that version, so that you can inspect the vcproj in the IDE (or
rebuild, and look at the build log).

> Yes, the mapping of vcproj settings to compiler switches is
> undocumented insofar as the file format of a vcproj file is purposely
> opaque. If you need to manipulate the settings, you are expected to
> use the IDE (manual manipulation) or the automation API (programmatic
> manipulation), not edit the text of the vcproj file.

That is a _new_ expectation introduced post v6, which is exactly the
point I was making in the original post.

I also find it somewhat ironic that VC's own CRT/ATL/MFC sources
still come with makefiles, not vcproj's.

Liviu


From: Pavel A. on
"Richard" <legalize+jeeves(a)mail.xmission.com> wrote in message
news:e0D9zhU0KHA.3676(a)TK2MSFTNGP05.phx.gbl...

> "Pavel A." <pavel_a(a)12fastmail34.fm> spake the secret code
> <2A0B6242-4412-445D-A1F1-64CBB1251318(a)microsoft.com> thusly:
>
>>You may find this article useful:
>>http://msdn.microsoft.com/en-us/library/cc265073.aspx
>
> That link seems to show the content without context. Just for the
> benefit of others, this is an excerpt from I.M. Wright's book
> "Hard Code".
[............]

Pardon me... they change the MSDN layout all the time; it was in context
when I've bookmarked it.
Here is a link to the original blog of "I.M.Wrigth" (pseudonym of Eric
Brechner)

http://blogs.msdn.com/eric_brechner/about.aspx

Great advice - wish I found it many o'moons earlier!

Regards,
-- pa

From: Tim Roberts on
legalize+jeeves(a)mail.xmission.com (Richard) wrote:
>
>>Yes, of course, but that's irrelevant to the point I was making. The
>>vcproj file does _not_ contain (officially published) information about
>>how the settings translate to the (well documented) compiler/linker
>>switches.
>
>And yet I feel this is a worthless point to make because it just
>doesn't come up in practice. In the decade or more that I've been
>using Visual Studio and automating builds with it, I've *never* needed
>to know this and I push beyond the boundaries of what the average
>developer does with Visual Studio, in my experience.

I would have to disagree also. Have you every tried to make bulk changes
to a set of vcproj files? I don't want to wear my fingers out by clicking
over and over and over and over and over to change common settings to, for
example, make run-time library settings consistent, or change an include
file path, etc.

**MANY** are the times I've edited the vcproj files by hand. I, too, am
very annoyed that there is no reference to the settings. The situation has
become slightly better now that there are .NET pages that describe the C#
enumerations by name, but they still don't present the numeric values.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: Pavel A. on
"Tim Roberts" <timr(a)probo.com> wrote in message
news:9pvar5dg0pnl3rprsecnutb80v4jrk8gkl(a)4ax.com...
........................
> Have you every tried to make bulk changes
> to a set of vcproj files? I don't want to wear my fingers out by clicking
> over and over and over and over and over to change common settings to, for
> example, make run-time library settings consistent, or change an include
> file path, etc.

Why making a bulk change to several vcproj's is harder than changing several
makefiles?
They are plain text. Find & replace, or write a script....

And, have you tried property sheets?
In a property sheet you can define environment variables for external
tools, extra includes, libs and makefile commands.

Regards,
-- pa