1

我有一个生成文件:

添加命令:coqtop -R coqdir我必须在我的计算机中给出一个物理路径,但是这个目录取决于用户目录。( ~/color/trunk/color/devel/gwen Devel and ~/color/trunk/color CoLoR)。

在没有给出物理路径的情况下,是否有另一种方法可以调用和组合程序?

tmp/rainbow.native: tmp
coqtop -q -R ~/color/trunk/color/devel/gwen Devel -R ~/color/trunk/color CoLoR 
-batch -load-vernac-source extraction.v && 
(cd tmp && ocamlbuild -j 3 rainbow.native)

tmp:
    mkdir -p $@
4

2 回答 2

1

这就是$PATH环境变量的用途:您将目录添加到其中可以找到要运行的程序。基本上没有办法make,或者你的makefile,可以搜索整个计算机的coqtop程序,所以调用makefile的人必须知道它在哪里并通知makefile。

$PATH通常这是由知道程序在哪里的人完成的,在他们调用之前将包含程序的目录添加到他们的环境变量中make

如果您不想那样做,那么他们将需要在make命令行上设置一个指向 location:make DEVEL=$HOME/color/trunk/color/devel或类似的变量。或者他们可以在环境变量中设置路径(make始终将所有环境变量导入为 makefile 宏)。

作为另一种选择,您可以使用(假设您使用的是 GNU make 或支持它的 make)-include local.mk然后让他们在他们的目录中创建一个文件local.mk,在他们运行之前设置这个变量make;这样他们就可以一次创建具有正确路径的文件并完成它。

这些是您唯一的选择,除非有某种方法可以通过算法确定您想要的路径,例如,当前目录或包含 makefile 的目录(您似乎说没有)。

于 2012-03-20T14:53:09.687 回答
0

使用 coq v8.4,您可以将环境变量设置COQPATH为冒号分隔的路径(可能在 Windows 上以分号分隔),并且 coq 会将这些目录视为已通过-R <directory> ''. 换句话说,它将递归地添加所有文件,前缀为空。

同样默认情况下,coq v8.4 将自动以相同的方式处理~/.local/share/coq(技术上)。因此,您可以使用适当的名称(即和)${XDG_DATA_HOME}/coq链接那里的适当目录。DevelCoLoR

于 2012-03-31T05:27:33.033 回答