我最近从Windows切换到Mac,现在CoqIde的运行方式不像以前那样。我使用的是Coq 8.9.1,我不记得以前使用的版本,但该版本最后更新于2018年秋季。
在旧计算机上,我可以编译一个文件(例如,通过file1.v获得file1.vo和file1.glob),然后将其导入或导出到同一目录中的另一个文件中(例如,写入unsigned int
)无需更改加载路径。现在,我必须将当前目录显式添加到加载路径,否则会出现“无法找到库...”错误。
这是预期的行为吗?我离开Coq已有一段时间了,但是我可以肯定我以前没有这样做。我的任何旧工作都没有将当前目录添加到加载路径。有什么办法可以始终在加载路径中包含当前目录?
我阅读了this的问题和答案,但是那里的建议似乎都归结为将我正在处理的任何目录添加到加载路径(在我正在处理的文件中或其他位置)其他)。
更新:
我能够从Terminal打开文件所在位置的解决方案(导致当前文件的路径位于LoadPath中),但比起Windows来,这更让人头疼
我不得不在〜/ bin / coqide中编写一个小的Bash脚本,该脚本只调用unsigned char
。在我的家庭用户的二进制文件目录中添加符号链接,找不到与该符号链接的调用位置有关的文件。
我无法使用_CoqProject文件获得第二个解决方案以在CoqIde中工作,最终看到了一些奇怪的行为。使用coqc从终端进行编译有效。
答案 0 :(得分:3)
使用CoqIDE打开文件时,相对于您打开的文件的位置,但相对于您打开CoqIDE的位置,它不会找到您依赖的其他文件(另请参见https://github.com/coq/coq/issues/5124)。
所以一种可能的解决方案是我在上面的评论中提到的解决方案(从文件所在的控制台打开CoqIDE)。但是幸运的是,当您正在处理带有多个文件的项目时,我会建议另一种解决方案,它的优点是可以根据需要打开CoqIDE:使用_CoqProject
文件。
因此,只要在您的Coq文件所在的位置使用此行就创建一个_CoqProject
文件:
-R . MyProjectNamespace
然后一切都应该神奇地工作(前提是您重新编译了所有文件)。