疯了:Meson构建:手动添加可执行文件的依赖路径

时间:2018-12-04 11:07:09

标签: meson-build

我想做的事情很简单:使用Meson构建系统+手动包含依赖项来编译项目。

但是,由于Mac上的系统完整性保护,我不想将其安装到/usr/lib。 (我知道我可以关闭它;我不想。)

所以基本上我想做: g++ -L[path_to_lib] [files...],但使用meson代替g++

但是,这似乎超级复杂。经过研究并添加失败 cc = meson.get_compiler('c') dep = cc.find_library('granite' dirs: [ [path_to_dep] ]) 到我的meson.build文件(该文件不起作用,因为它处理库,而不是依赖项) 我感到很傻。

请帮助!

我知道我可以只将相关路径添加到$ PATH中,但这不仅仅是矫over过正,我拒绝相信没有另一种不错的快速方法。 (与古老的c编译器一样...)

1 个答案:

答案 0 :(得分:0)

您应该能够解决您的问题而无需修改 meson.build 文件(我的意思是将花岗岩保留为普通依赖项)。 介子使用pkg-config搜索依赖项,因此,如果将包含花岗岩软件包配置文件的非标准路径添加到PKG_CONFIG_PATH,它将找到它。当然,在这种情况下,花岗岩软件包的配置文件应该正确无误,即包含正确的库和标头路径,如果您configure installation使用类似以下内容的花岗岩{

# Configure:
$ cmake -DCMAKE_INSTALL_PREFIX=/some/path...
# Build:
$ make
# Install (need sudo?):
$ make install

$ export PKG_CONFIG_PATH=/some/path...:$PKG_CONFIG_PATH

granite_dep = dependency('granite')
my_app = executable('my_app',
  dependencies : [granite_dep]
  ...

但是,请注意,根据reference manual,在 find_library()的情况下:

  

可以像依赖项的返回值一样使用结果对象

所以,它应该工作:

granite_dep = cc.find_library('granite', dirs : [path])
executable(..., dependencies : granite_dep)

但是,我建议使用pkg-config的标准方法,因为花岗岩也可能具有依赖关系,您将无法通过这种方式自动获取。