Help needed testing automatic win64 configuration

Rainer Schuetze r.sagitario at gmx.de
Thu Oct 17 14:20:31 PDT 2013



On 17.10.2013 10:41, Manu wrote:
>
>
>
> On 17 October 2013 17:08, Rainer Schuetze <r.sagitario at gmx.de
> <mailto:r.sagitario at gmx.de>> wrote:
>
>
>
>     On 16.10.2013 13:13, Manu wrote:
>
>
>              It seems the installer failed to replace two occurences of
>              %WindowsSdkDir%. WindowsSdkDir is set by batch files
>         vsvars32..bat
>              and friends. I see conflicting goals here:
>
>              1. the installer expands variables WindowsSdkDir and
>         VCINSTALLDIR in
>              sc.ini to work without running vsvars32.bat. It has to make
>              decisions on what versions to pick up.
>
>              2. when running dmd by Visual D you want to select settings
>              according to the current Visual Studio, which means it
>         needs the
>              unexpanded variables.
>
>              The current option to allow both is to not run the linker
>         through
>              dmd, but invoke it "manually".
>
>
>         What do you mean by 'manually' exactly?
>         Is there anything that can be done in VisualD to override these
>         variables when invoking the compiler?
>
>
>     By "manually" I mean that the linker is not run through dmd, but is
>     called directly from the batch generated by Visual D. This means,
>     Visual D has to extract all the settings from sc.ini and rebuild the
>     command line that dmd would generate. In addition, it needs to know
>     which settings have to be replaced and which have been set
>     deliberately by the user.
>
>
> Hmmm, I tend to think that sc.ini should be ignored/overridden entirely
> under VisualD.
> Visual Studio has all its own places to configure paths and options.
>
> Anyone who runs more than one version of Visual Studio has to
> micro-manage sc.ini, which is really annoying.
> As a VisualD user, I expect to be able to access all settings and paths
> in Visual Studio, and they should be relevant for the version of Visual
> Studio in use.
>
> At least that's my take on it, from an end-user perspective.
>

Makes sense, though I'm unsure how to stop dmd from interpreting sc.ini. 
Adding an empty sc.ini into the project folder could work, but is a bit 
ugly.

>
> On a side note, Visual Studio tends to maintain it's default settings in
> property sheets (you can access the x64 defaults under
> Microsoft.Cpp.x64.user under the Property Manager). I wonder if VisualD
> should also store defaults in the same place, but then I noticed that
> VisualD project's don't seem to have any presence in the Property
> Manager... I guess it's a special project type, and therefore subvert's
> MSBuild? I don't really know how all that stuff fits together.

When I started work on Visual D, VS2008 was the current version and it 
did not use msbuild for C++ (IIRC only for C#). There was no good reason 
to build on top of msbuild.

Even with VS2010, I don't like msbuild. I think msbuild has good 
dependency handling, see the Intel Compiler integration which is 
horrible. My impression is that MS subverts msbuild for C++ to make it 
acceptable.

>
>
> You know, thinking on it, it's kinda strange in a sense that D should
> have completely distinct library paths at all. It might be useful in
> VisualD to add all the C/C++ x64 library paths as standard link paths
> aswell.
> Surely it's reasonable as a Visual Studio end-user to assume that any
> libs available to C/C++ should also be available to D too? These are
> 'system libs' after all. At least, they've been registered with VS as if
> they are.

I tend to agree. I'll see if I can find the C++ settings somewhere, so I 
can add a switch to add the library paths automatically.

I think we'll need different global settings for Win32 and Win64, too.

>
>
>         There's one other detail that I forgot in my prior email; I think it
>         would be really handy to include the DirectX lib path by default.
>         It's a very standard MS lib package, and anyone who does multimedia
>         development will surely have it on their system, and require it
>         to be
>         hooked up.
>         My DX libs are here: C:\Program Files (x86)\Microsoft DirectX
>         SDK (June
>
>         2010)\Lib\x64
>         It seems I have an environment variable: DXSDK_DIR=C:\Program Files
>         (x86)\Microsoft DirectX SDK (June 2010)\
>         It also seems to register a presence in the registry at:
>         HKEY_LOCAL_MACHINE\SOFTWARE\__Wow6432Node\Microsoft\DirectX\__Microsoft
>         DirectX SDK (June 2010)\InstallPath
>
>         I usually have more faith in the registry, but the env variable is
>         surely going to be present on everyone's machine.
>
>
>     I'm not sure we should add too many special cases, everybody has his
>     own set of favorite libraries (I haven't touched DirectX for more
>     than 10 years). Considering that you probably have to make your own
>     imports for the respective declarations, I think it is ok to add an
>     appropriate library path to your project aswell.
>
>     It seems the DX-SDK does not end up in the LIB environment variable
>     for the VS command prompt aswell, though I see it added in the
>     Visual Studio settings.
>
>
> I only suggest the DXSDK lib in particular for a few reasons:
>   1. It's a really standard Microsoft lib, not just some 3rd party thing.
>   2. Being a Microsoft lib, it integrates into Visual Studio
> automatically when installed, and it's necessary to do basically any
> multimedia in windows.
>   3. It's been integrated into the Windows 8 SDK from VS2012 and on
> (that's why the stand-alone package is quite old), but for the sake of
> 'it just works', for prior versions of Visual Studio (which we do
> support), the path needs to be added.
>
> Ie, there's a risk of VS2012 users saying "well it works for me!", but
> the VS2010 users complaining that it doesn't seem to work for them, and
> then scratching heads why it works for some but not others.

With the option to include C++ libraries, the DX-SDK libraries will be 
found, too. At least from within Visual D...


More information about the Digitalmars-d mailing list