我想做的事情很简单:使用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编译器一样...)
答案 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的标准方法,因为花岗岩也可能具有依赖关系,您将无法通过这种方式自动获取。