#pragma comment (lib, ...)

Jesse Phillips Jessekphillips+D at gmail.com
Fri Oct 12 14:43:28 PDT 2012


On Thursday, 11 October 2012 at 07:10:57 UTC, Jacob Carlborg 
wrote:
> On 2012-10-11 04:54, Jesse Phillips wrote:
> I think it would be much better to work with packages and not 
> individual libraries. You would just tell the build tool, 
> compiler or whatever to use package "foo". Then the package 
> manager figures out what libraries and dependencies it needs to 
> link to and also the path to the import files.

Why can't I just tell the compile that I need library "foo," and 
the package manager can handle finding the package which provides 
that library?

Packages depend on other packages, code depends on other code. I 
don't think it makes sense for code to depend on a package. 
Granted, packages could provide code that is depended on...

On the note about flags... Most of them are external to the code, 
you could say they are the options of the package. However, for 
libraries, we have a separate program which can operate without 
the source code, thus the historical reason code dependencies are 
not stated in the code. Why should we have 'import?' Can't we 
just tell the compiler the files it will need for its symbols 
separately, I don't know... maybe we could add a flag to specify 
them so it would feel strange to have them in the source code 
too. (Sorry couldn't pass it up)

As for the version number, you are right, I should know. But much 
of the code I write/use doesn't make release. This is where a 
handy and easy to use package manager comes in. Releases become 
simpler, there can be verified and tested versions of the 
depended libraries. But even with a tested version, that doesn't 
mean it will fail with older or newer versions of the package.

Linux creates symbolic links to its shared libraries to provide 
an unversioned link. And while all the packages know which 
version that is, third part applications do not. Yes, this 
arbitrary guessing game has its problems, but so does the strict 
version requirements. I've had to create symbolic links to a 
newer library to pretend I had an older version (as digging up 
such a version becomes hard when the package manager becomes 
worthless).

Anyway, I look forward to a good packaging system for D. But 
stating the dependency in that doing the depending does make 
sense. However I've realized that the dependency on a library 
only makes sense for header files, and header files only make 
sense when interfacing with C. Dependency on D code and libraries 
all come stated from the 'import' statement.


More information about the Digitalmars-d mailing list