Re: Building (and including libraries) without dub
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
Re: Building (and including libraries) without dub
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
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
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
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
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
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`