January 14, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to p.shkadzko | On Tuesday, 14 January 2020 at 09:54:18 UTC, p.shkadzko wrote:
> [...]
May I ask, whether you have tried to use Dub, or is s.th. blocking
you from using Dub?
Kind regards
André
|
January 14, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to p.shkadzko | On Tuesday, 14 January 2020 at 09:54:18 UTC, p.shkadzko wrote: > On Monday, 13 January 2020 at 21:15:51 UTC, p.shkadzko wrote: >> On Monday, 13 January 2020 at 20:53:43 UTC, p.shkadzko wrote: >>> On Monday, 13 January 2020 at 19:56:35 UTC, p.shkadzko wrote: >>>> On Monday, 13 January 2020 at 17:14:29 UTC, p.shkadzko wrote: >>>>> [...] >>>> >>>> I had to set PKG_CONFIG_PATH to "/usr/local/lib/pkgconfig". For some reason Manjaro distro doesn't have it set by default. After setting the pkgconfig path, lubeck is getting found and everything works. >>> It's very odd to me that Manjaros pkg-config doesn't include that pkg-config path by default and also doesn't include that library path by default, every distro I've so far used did that. > I added /usr/local/include/d/cblas/cblas to $PATH but that didn't help :( Can you show us your meson.build? You need to set `dependencies:` properly to include all dependencies so ninja includes the right dirs and links the required libraries. You can look at other projects using D for that, e.g. I do it like this: https://github.com/Cogitri/corecollector/blob/master/source/corectl/meson.build |
January 14, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andre Pany | On Tuesday, 14 January 2020 at 11:26:30 UTC, Andre Pany wrote:
> On Tuesday, 14 January 2020 at 09:54:18 UTC, p.shkadzko wrote:
>> [...]
>
> May I ask, whether you have tried to use Dub, or is s.th. blocking
> you from using Dub?
>
> Kind regards
> André
I tested dub and it fetched and compiled mir.ndslice and lubeck without issues. Then somebody mentioned meson and that it gives you more control and speed over the build. I also saw that mir library uses meson so decided to give it a try.
|
January 14, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rasmus Thomsen | On Tuesday, 14 January 2020 at 15:15:09 UTC, Rasmus Thomsen wrote: > On Tuesday, 14 January 2020 at 09:54:18 UTC, p.shkadzko wrote: >> On Monday, 13 January 2020 at 21:15:51 UTC, p.shkadzko wrote: >>> On Monday, 13 January 2020 at 20:53:43 UTC, p.shkadzko wrote: >>>> On Monday, 13 January 2020 at 19:56:35 UTC, p.shkadzko wrote: >>>>> On Monday, 13 January 2020 at 17:14:29 UTC, p.shkadzko wrote: >>>>>> [...] >>>>> >>>>> I had to set PKG_CONFIG_PATH to "/usr/local/lib/pkgconfig". For some reason Manjaro distro doesn't have it set by default. After setting the pkgconfig path, lubeck is getting found and everything works. >>>> > > It's very odd to me that Manjaros pkg-config doesn't include that pkg-config path by default and also doesn't include that library path by default, every distro I've so far used did that. > >> I added /usr/local/include/d/cblas/cblas to $PATH but that didn't help :( > > > Can you show us your meson.build? You need to set `dependencies:` properly to include all dependencies so ninja includes the right dirs and links the required libraries. You can look at other projects using D for that, e.g. I do it like this: https://github.com/Cogitri/corecollector/blob/master/source/corectl/meson.build Here is my meson.build file --------------------------- project('demo_proj', 'd', version : '0.1', default_options : ['warning_level=3'] ) mir_alg = dependency('mir-algorithm', method: 'pkg-config') lubeck = dependency('lubeck', method: 'pkg-config') required_deps = [mir_alg, lubeck] ed = executable('demo_proj', 'app.d', dependencies: required_deps, install : true) As I mentioned earlier cblas.d is installed in /usr/local/include/d/cblas/cblas/cblas.d |
January 14, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to p.shkadzko | On Tuesday, 14 January 2020 at 20:14:30 UTC, p.shkadzko wrote: > On Tuesday, 14 January 2020 at 15:15:09 UTC, Rasmus Thomsen wrote: >> On Tuesday, 14 January 2020 at 09:54:18 UTC, p.shkadzko wrote: >>> On Monday, 13 January 2020 at 21:15:51 UTC, p.shkadzko wrote: >>>> On Monday, 13 January 2020 at 20:53:43 UTC, p.shkadzko wrote: >>>>>[...] >> >> It's very odd to me that Manjaros pkg-config doesn't include that pkg-config path by default and also doesn't include that library path by default, every distro I've so far used did that. >> >>> I added /usr/local/include/d/cblas/cblas to $PATH but that didn't help :( >> >> >> Can you show us your meson.build? You need to set `dependencies:` properly to include all dependencies so ninja includes the right dirs and links the required libraries. You can look at other projects using D for that, e.g. I do it like this: https://github.com/Cogitri/corecollector/blob/master/source/corectl/meson.build > > Here is my meson.build file > --------------------------- > project('demo_proj', 'd', > version : '0.1', > default_options : ['warning_level=3'] > ) > > mir_alg = dependency('mir-algorithm', method: 'pkg-config') > lubeck = dependency('lubeck', method: 'pkg-config') > required_deps = [mir_alg, lubeck] > > ed = executable('demo_proj', 'app.d', dependencies: required_deps, install : true) > > > As I mentioned earlier cblas.d is installed in /usr/local/include/d/cblas/cblas/cblas.d If I replace lubeck with mir-lapack (which I also installed into /usr/local/lib), repeat "meson build && cd build && ninja" and call ./demo_proj, I get this: ----- ./demo_proj: error while loading shared libraries: subprojects/mir-algorithm/libmir-algorithm.so.3.4.0:ject file: No such file or directory But libmir-algorithm.so.3.4.0 is installed in /usr/local/lib and it is in $PATH :( |
January 15, 2020 Re: How to create meson.build with external libs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to p.shkadzko | On Sunday, 12 January 2020 at 22:00:33 UTC, p.shkadzko wrote: > Ok, I am trying to meson and is struggling with meson.build file. I looked up the examples page: https://github.com/mesonbuild/meson/tree/master/test%20cases/d which has a lot of examples but not the one that shows you how to build your project with some external dependency :) > > Let's say we have a simple dir "myproj" with "meson.build" in it and some source files like "app.d" and "helper_functions.d". > > ~/myproj > app.d > helper_functions.d > meson.build > > "helper_functions.d" uses let's say lubeck library which according to https://forum.dlang.org/thread/nghoprwkihazjikyhshz@forum.dlang.org is supported by meson. > > Here is my meson.build: > ----------------------- > project('demo', 'd', > version : '0.1', > default_options : ['warning_level=3'] > ) > > lubeck = dependency('lubeck', version: '>=1.1.7') > ed = executable('mir_quickstart', 'app.d', dependencies: lubeck, install : true) > > > However, when I try to build it I get the following error: > ----- > $ meson build > The Meson build system > Version: 0.52.1 > Source dir: /home/user/dev/github/demo > Build dir: /home/user/dev/github/demo/build > Build type: native build > Project name: demo > Project version: 0.1 > D compiler for the host machine: ldc2 (llvm 1.18.0 "LDC - the LLVM D compiler (1.18.0):") > D linker for the host machine: GNU ld.gold 2.33.1 > Host machine cpu family: x86_64 > Host machine cpu: x86_64 > Found pkg-config: /usr/bin/pkg-config (1.6.3) > Found CMake: /usr/bin/cmake (3.16.2) > Run-time dependency lubeck found: NO (tried pkgconfig and cmake) > > meson.build:8:0: ERROR: Dependency "lubeck" not found, tried pkgconfig and cmake > > A full log can be found at /home/user/dev/github/demo/build/meson-l > ----- > > What do I need to do in order to build the project with "lubeck" dependency in meson? Seems like you have missed the *.wrap files in subprojects folder. It's a bad idea to install D meson libs into system as probably you will want to control versions easily. You need all *wrap files recursively. Check this https://github.com/kaleidicassociates/lubeck/tree/master/subprojects and add a wrap file for Lubeck. You can specify tags instead of the master branches. - it is recommended for stable work. Ilya |
Copyright © 1999-2021 by the D Language Foundation