将pkg-config与模块环境组合

问题描述 投票:0回答:1

如果我对pkg-config和environment模块的理解有些不正确,那么这个问题可能没有多大意义,但是无论如何我都会问,因为我找不到关于此主题的任何特定信息。可能会有一个更好的解决方案,如果是这样的话,我全都听了!

回来的时候,我开始使用模块来根据需要轻松加载我的开发环境(即,使用诸如module load foo之类的命令)。最近,我为我的项目采用了介子构建系统。在介子中,库被视为依赖项,它们是在后台使用pkg-config找到的。因此,现在我有两种发现库并设置它们的lib和include目录的方法。

作为示例,我为库foo使用了以下(简化的)模块脚本(我使用的是基于lua的lmod):

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include") 

我也可以有一个类似pkg-config的文件(* .pc)(例如,如果我对pkg-config的理解正确的话)

prefix=/opt/foo
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: foo
Cflags: -I${includedir}
Libs: -L${libdir} -lfoo

现在,两者似乎都在做同样的事情(就设置环境而言),但是简单地使用modulefiles不会让介子找到我的依赖项,而我仍然必须使用pkg-config(这基本上需要创建两个手动或动态文件,但这听起来像是维护负担,而且也不是很干净)。同样,我可以创建pkg-config文件并将该文件的位置添加到PKG_CONFIG_PATH中,即,类似于[]

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include")
prepend_path("PKG_CONFIG_PATH", /path/to/*.pc/file) 

但同样需要两个文件(pkg和模块)。我宁愿喜欢模块环境,也不想放弃它,所以有没有更好/更干净的方法,我只加载一个模块文件,该文件将允许pkg-config(进而是介子)知道关于依赖性?

如果我对pkg-config和environment模块的理解有些不正确,那么这个问题可能没有多大意义,但是无论如何我都会询问,因为我找不到关于此主题的任何特定内容...。

module pkg-config meson-build
1个回答
0
投票
到目前为止,环境模块和pkg-config工具之间没有桥梁。我认为保持模块系统最好的方法是有一个脚本来查询每个可用的pkg-config文件并创建相应的modulefile。并定期运行该脚本以保持同步。
© www.soinside.com 2019 - 2024. All rights reserved.