Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
August 26, 2017 Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Building simple programs without dub is easy, just pass a list of .d source files to `dmd` or `ldc2`. What if I want to include a 3rd party library? Surely before dub existed, people were incorporating other libraries in their projects. I want to learn how this works from first principles. I've been working with dynamic/interpreted languages for too long, I forgot what it's like to build native programs without a dependency manager. Any help would be appreciated! |
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hasen Judy | 26.08.2017 12:03, Hasen Judy пишет:
> Building simple programs without dub is easy, just pass a list of .d source files to `dmd` or `ldc2`.
>
> What if I want to include a 3rd party library? Surely before dub existed, people were incorporating other libraries in their projects.
>
> I want to learn how this works from first principles. I've been working with dynamic/interpreted languages for too long, I forgot what it's like to build native programs without a dependency manager.
>
> Any help would be appreciated!
It's like C++. If you use Linux then:
```
dmd <list of your .d files like you do> -L/path/to/lib -llibrarynamewithoutlibprefix
```
or example
```
dmd myapp.d -L../otherproject/lib -lcool
```
line above compiles `myapp.d` file and links it with library `libcool` that is place in directory `../otherproject/lib`
|
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug | On Saturday, 26 August 2017 at 10:02:03 UTC, drug wrote:
> It's like C++. If you use Linux then:
> ```
> dmd <list of your .d files like you do> -L/path/to/lib -llibrarynamewithoutlibprefix
> ```
> or example
> ```
> dmd myapp.d -L../otherproject/lib -lcool
> ```
> line above compiles `myapp.d` file and links it with library `libcool` that is place in directory `../otherproject/lib`
Thanks for your response!
So if I may make a guess, when you include a dependency in a dub project, what it ends up doing is compiling the dependency separately into a lib file then statically link the lib with your project?
|
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hasen Judy | 26.08.2017 13:05, Hasen Judy пишет:
> On Saturday, 26 August 2017 at 10:02:03 UTC, drug wrote:
>> It's like C++. If you use Linux then:
>> ```
>> dmd <list of your .d files like you do> -L/path/to/lib -llibrarynamewithoutlibprefix
>> ```
>> or example
>> ```
>> dmd myapp.d -L../otherproject/lib -lcool
>> ```
>> line above compiles `myapp.d` file and links it with library `libcool` that is place in directory `../otherproject/lib`
>
> Thanks for your response!
>
> So if I may make a guess, when you include a dependency in a dub project, what it ends up doing is compiling the dependency separately into a lib file then statically link the lib with your project?
Yes
|
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug | On 26-08-17 12:02, drug wrote: > 26.08.2017 12:03, Hasen Judy пишет: >> Building simple programs without dub is easy, just pass a list of .d source files to `dmd` or `ldc2`. >> >> What if I want to include a 3rd party library? Surely before dub existed, people were incorporating other libraries in their projects. >> >> I want to learn how this works from first principles. I've been working with dynamic/interpreted languages for too long, I forgot what it's like to build native programs without a dependency manager. >> >> Any help would be appreciated! > > It's like C++. If you use Linux then: > ``` > dmd <list of your .d files like you do> -L/path/to/lib -llibrarynamewithoutlibprefix > ``` > or example > ``` > dmd myapp.d -L../otherproject/lib -lcool > ``` > line above compiles `myapp.d` file and links it with library `libcool` that is place in directory `../otherproject/lib` You will need an extra `-L` to pass things to the linker with dmd. ``` dmd myapp.d -L-L../otherproject/lib -L-lcool ``` -- Mike Wey |
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hasen Judy | On Saturday, 26 August 2017 at 09:03:03 UTC, Hasen Judy wrote:
> Building simple programs without dub is easy, just pass a list of .d source files to `dmd` or `ldc2`.
>
> What if I want to include a 3rd party library?
It is also easy, just pass the list of its d source files to the compiler as well. Quite trivial, really.
|
August 26, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Saturday, 26 August 2017 at 12:45:31 UTC, Adam D. Ruppe wrote: > On Saturday, 26 August 2017 at 09:03:03 UTC, Hasen Judy wrote: >> Building simple programs without dub is easy, just pass a list of .d source files to `dmd` or `ldc2`. >> >> What if I want to include a 3rd party library? > > It is also easy, just pass the list of its d source files to the compiler as well. Quite trivial, really. Note that yesterday I pushed a PR to dmd that allows you to import 3rd party libraries without having to list all their d source files on the command line (https://github.com/dlang/dmd/pull/7099). So long as the compiler knows where to find them (using -I<path>), if you specify -ci (compile imports) it will automatically treat all unknown imports as if they were specified on the command line. |
August 27, 2017 Re: Building (and including libraries) without dub | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hasen Judy | On Saturday, 26 August 2017 at 09:03:03 UTC, Hasen Judy wrote: > What if I want to include a 3rd party library? Surely before dub existed, people were incorporating other libraries in their projects. sometimes pragma("lib", ...) very usefull (if i understand you correctly) https://dlang.org/spec/pragma.html#lib |
Copyright © 1999-2021 by the D Language Foundation