1

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

/usr/lib但是,由于 Mac 上的系统完整性保护,我不想安装一个依赖项。(我知道我可以关闭它;我不想这样做。)

所以基本上我想做: 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,但这太过分了,我拒绝相信没有另一种好的快速方法可以做到这一点。(与古老的 c 编译器一样......)

4

1 回答 1

1

您应该能够在不修改meson.build文件的情况下解决您的问题(我的意思是让花岗岩作为普通依赖项)。meson使用 pkg-config 来搜索依赖项,因此如果您将包含花岗岩包配置文件的非标准路径添加到PKG_CONFIG_PATH它,它将找到它。在这种情况下,granite 包配置文件当然应该是正确的,即包含正确的库和头文件路径,如果您使用以下内容配置安装花岗岩,这应该是正确的:

# 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]
  ...

但是,请注意,如果find_library()根据参考手册

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

所以,它应该工作:

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

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

于 2018-12-06T17:39:53.650 回答