【问题标题】:oasis: linker flags as user inputoasis:链接器标记为用户输入
【发布时间】:2026-02-20 19:35:01
【问题描述】:

我认为 oasis 是一种替代用于构建 ocaml 项目的常用 autoconf 工具链的方法,我非常喜欢这种方法。

不幸的是,我必须将我的项目与不同系统上的 C 库链接起来,因此我需要弄清楚该库的实际位置。在我的开发系统上,以下设置有效:

Executable e2bench
  Path:    .    
  CompiledObject: best
  BuildTools: ocamlbuild
  BuildDepends: e2lang, core, core_bench
  CCLib:        -ltnp -L/home/choeger/local/lib/
  DllLib:   libtnp
  DllPath:  /home/choeger/local/lib
  MainIs: e2bench.ml

但显然(即使我不知道为什么;)),并不是每个人都会将库安装到 /home/choeger/local - 所以我基本上需要在 setup.ml 中添加一个标志来询问库路径并相应地设置一个 oasis 变量(几乎类似于 autoconf)。我该怎么做?

作为一个额外的问题:我如何测试针对此路径的链接以提供早期救助(如配置脚本)而不是 ocamlbuild 错误?

第二个好处:我如何调用 pkg-config 来实现这一点?

【问题讨论】:

    标签: build dependencies ocaml


    【解决方案1】:

    我相信目前在 oasis 中没有直接的方法可以做到这一点,但 pkg-config 集成正在进行中,通用参数传递是一个经常被请求的功能,所以希望有一天它会得到支持(欢迎补丁! )。另一方面,要求库的用户设置环境以便链接器可以使用库对我来说听起来并不过分限制,特别是考虑到库也应该在运行时可用..

    【讨论】: