Building (and including libraries) without dub

2017-08-26 Thread Hasen Judy via Digitalmars-d-learn
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!


Re: Building (and including libraries) without dub

2017-08-26 Thread drug via Digitalmars-d-learn

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  -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`


Re: Building (and including libraries) without dub

2017-08-26 Thread Hasen Judy via Digitalmars-d-learn

On Saturday, 26 August 2017 at 10:02:03 UTC, drug wrote:

It's like C++. If you use Linux then:
```
dmd  -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?


Re: Building (and including libraries) without dub

2017-08-26 Thread drug via Digitalmars-d-learn

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  -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


Re: Building (and including libraries) without dub

2017-08-26 Thread Mike Wey via Digitalmars-d-learn

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  -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


Re: Building (and including libraries) without dub

2017-08-26 Thread Adam D. Ruppe via Digitalmars-d-learn

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.


Re: Building (and including libraries) without dub

2017-08-26 Thread Jonathan Marler via Digitalmars-d-learn

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), if you 
specify -ci (compile imports) it will automatically treat all 
unknown imports as if they were specified on the command line.


Re: Building (and including libraries) without dub

2017-08-27 Thread zabruk70 via Digitalmars-d-learn

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