使一个项目成为 coq 中另一个项目的子项目?

Making one project a sub-project of another project in coq?

我是testing a coq project called corn,需要另一个项目MathClasses作为依赖。我能够通过 sudo make install 类型的过程编译依赖项目 MathClasses

但是,make install 流程中有一些我不喜欢的功能。

首先,如果我再次执行 make,coq 似乎对系统中某处已经安装的内容以及当前正在编译的内容感到困惑。

其次,项目在make文件中没有提供removeuninstall方法。我怀疑这可能会在我升级到 coq.

的新版本时给我带来问题

所以我的问题是:

  1. 是否有可能(以及如何)使依赖项目(即 MathClasses)成为 CoRN 的子项目,以便我可以编译整个项目从顶级项目发出一个命令 (CoRN)?

  2. 在我 make 一个 coq 项目之后,我可以将它加载到 coqtop 而不 install 到系统目录吗? (即如何在本地修改和测试项目)。

提前致谢。

-- 编辑--

@Arthur Azevedo De Amorim:你提到了

Plus, OPAM makes it possible to work with your own local version of a package

关于此的任何进一步指示?

再次感谢

设置子项目

您始终可以在项目中设置加载路径Makefile,以便它准确找到您想要的库版本。

假设您的 MathClasses 副本位于 /path/to/MathClasses。然后,您可以将以下行添加到 CoRN 分发中的 Make.in 文件中:

-R path/to/MathClasses/ MathClasses

完成之后,编译过程应该能够找到 MathClasses 文件。

话虽这么说,直接安装一个包没什么大不了的。我觉得很奇怪,当你点击 make 时,Coq 对使用哪些文件感到困惑;你能包括你收到的错误信息吗?虽然自己升级 Coq 可能会导致已安装的库出现问题,但删除有问题的文件只需删除 user-contribs 目录下的相应目录(MathClasses,在您的情况下) Coq 库路径。

此外,使用 OPAM. There is a GitHub repository with updated Coq packages that can be used with OPAM, including MathClasses and CoRN; using it would make the whole Coq update problem go away. Plus, OPAM makes it possible to work with your own local version of a package (see here) 管理 Coq 安装可能更容易,这似乎是您想用 CoRN 做的。

正在加载包

如果您使用的是 Emacs 和 Proof General,您可以直接配置项目的加载路径,如 here 所述。