4

我想创建一个 Cabal 项目,可以在同一个项目中包含多个包。当我阅读 Cabal文档时,它说必须创建一个“cabal.project”文件。该文件是手动创建到项目根目录中还是有创建它的命令?文档说所有修改都应在“cabal.project.local”文件中进行。这个文件是如何创建的?这是否意味着要创建一个包含多个包的 cabal 项目,必须在同一个项目根目录中有一个“cabal.project”文件和一个“cabal.project.local”文件?谢谢。

4

1 回答 1

3

不要想太多。一个cabal.project文件主要只是列出一些你想作为一个单元一起构建的包,而不是从 Hackage 中提取它们。所以,是的,只需手动创建它。

文档中“所有修改都应在“cabal.project.local”文件中进行的意思是cabal.project应该指定构建项目始终需要什么(例如,根本不在 Hackage 上的包,但是直接或作为 Git 子模块包含在您的 repo 中),而如果您只是进行一些调整(例如,通过实验测试需要更改的内容,以便您的包将使用您检查过的某些 3rd-party 依赖项的新版本进行编译在考虑提交拉取请求或将其分叉到您自己的仓库之前在本地退出)那么这应该放在cabal.project.local文件中。但老实说,您也可以进行更改,cabal.project然后根本不git add进行更改†</sup>。

IMO 使包面向未来的所有实际重要信息都应驻留在packagename.cabal文件和/或stack.yaml文件中,而不是cabal.project.


†</sup>这里的危险在于,很容易意外地提交仅适用于已经 VCS 文件的本地更改。我总是使用git add -p,以便在提交之前查看我添加的任何更改。

于 2022-02-16T13:11:23.603 回答