#pragma comment (lib, ...)

Paulo Pinto pjmlp at progtools.org
Thu Oct 11 04:31:37 PDT 2012


On Thursday, 11 October 2012 at 11:46:39 UTC, Manu wrote:
> On 11 October 2012 12:04, Jacob Carlborg <doob at me.com> wrote:
>
>> On 2012-10-11 10:12, Manu wrote:
>>
>>  Sorry, I do know what a package manager is. I was being 
>> facetious, in
>>> that windows has no such concept, and most people use windows.
>>> It's not practical to depend on anything like that.
>>>
>>
>> RubyGems is working perfectly fine on Windows. Just because 
>> most Windows
>> does not have a built in package manager and most of these 
>> open source
>> language seems to lean towards Posix than Windows doesn't mean 
>> that you
>> can't have a working package manager in Windows.
>
>
> Okay, so I'll stop being a dick for a minute, I'm actually 
> curious to know
> how you imagine it working with a tool like VisualStudio.
> It sounds like you're not just talking about a tool to fetch 
> libs and
> dependencies, but also perform the build? And the dependencies 
> are detailed
> in the build script?
> An inflexible build system like Visual Studio doesn't really 
> handle that
> very well.
>
> A package manager which collects libs and their dependencies 
> into common
> include/lib paths sounds extremely useful. But to me it sounds 
> even more
> useful when combined with #pragma lib! That conveniently 
> eliminates the lib
> path issue.
>
> I can imagine a situation where libraries would imply their 
> associated lib
> just by being imported into your module. With a package manager 
> as you
> describe, and source-embedded lib linkage statements, your 
> average user
> would be in a position to never concern themselves with libs at 
> all. Sounds
> almost as good as Java/C#.
>
>
> I also maintain that it's not stupid. The build script doesn't 
> know what
>>
>> libs the code will link to. I guess you're arguing that your
>>> build-script should exclusively define the features/libs, not 
>>> the other
>>> way around?
>>>
>>
>> So what does know which libraries to link with if not the 
>> build script.
>> Something needs to know that.
>
>
> The source -> object files would ideally know, and the linker 
> would extract
> that information its self. I think that's the topic of the 
> conversation :)
>
>
> The linker would just need to be smart enough to gather the 
> deps from
>>> the objects while linking.
>>>
>>
>> The linker doesn't know anything about the import paths.
>>
>
> The linker knows standard places to search, and non-standard 
> places would
> still need to be configured... but this marry's very nicely 
> with a package
> manager as you describe, since there'll never be confusion 
> about where to
> look under that system.
>
>
> Does it work in windows and integrate with Visual Studio?
>>> If not, sadly, it's irrelevant.
>>>
>>
>> Of course, I build all by software to work cross-platform, 
>> what is
>> pointing to anything else.
>>
>> You're talking about "working on all platforms" but then you 
>> end with this
>> comment making the rest of your comments not very believable.
>>
>> I can end with the same comment. Does Visual Studio work on 
>> other
>> platforms than Windows? No, then it's irrelevant.
>>
>
> The point I'm trying to make is that a solution which is only 
> convenient
> when working with a particular configurable/flexible build 
> script isn't a
> sufficient solution.
> #pragma lib is very convenient, especially in the absence of a
> comprehensive build environment (such as Visual Studio). I 
> maintain that
> there is absolutely nowhere that understands library 
> dependencies better
> than the code that produces that dependency. I'd love to be 
> able to
> describe all linker requirements in that way if I could, 
> regardless of the
> toolchain/operating system.
>
> So I am actually all for a package manager for libs, 
> particularly in
> conjunction with #pragma lib. That beautiful union eliminates 
> the linker
> from the things that a programmer cares about almost entirely.
> I have my suspicions though that unless it gains universal 
> acceptable by
> the D community, the libs either won't be up to date, or just 
> not available
> - which may be a worse case, in that the management of libs 
> would be
> fractured across multiple management mechanisms.

For those of us doing .NET development, the answer is NuGet.
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c

And there is already a package manager for Windows that uses 
NuGet as infrastructure.

http://chocolatey.org/

--
Paulo


More information about the Digitalmars-d mailing list