project.cabal 文件的 build-depends 中的 `stack install NAME` 和 `NAME` 有什么区别?
What's the difference between `stack install NAME` and `NAME` in the build-depends of project.cabal file?
在项目 .cabal file
的 build-depends:
部分下添加 package_name
与在该项目目录中执行 stack install package_name
有什么区别?
stack install
只会将包安装到适当的位置(Stackage 中的库的当前快照数据库,其他库的 ./.stack-work
中的沙箱,~/.local/bin
或您系统的等效项其中用于可执行文件)。将库添加到 build-depends
将其指定为项目的依赖项,并导致在您下次执行 stack build
时安装该库。如果您确实在项目中使用该库,则必须将其添加到 build-depends
,否则您将无法构建项目(甚至无法使用 stack ghci
来使用该库)。
N.B.: 从 stack-0.1.3.1 开始,stack install NAME
只是 stack build --copy-bins NAME
的同义词。 --copy-bins
选项告诉堆栈将任何可执行文件复制到 ~/.local/bin
。如果您的包只是一个没有可执行文件的库,stack install NAME
与 stack build NAME
.
相同
在项目 .cabal file
的 build-depends:
部分下添加 package_name
与在该项目目录中执行 stack install package_name
有什么区别?
stack install
只会将包安装到适当的位置(Stackage 中的库的当前快照数据库,其他库的 ./.stack-work
中的沙箱,~/.local/bin
或您系统的等效项其中用于可执行文件)。将库添加到 build-depends
将其指定为项目的依赖项,并导致在您下次执行 stack build
时安装该库。如果您确实在项目中使用该库,则必须将其添加到 build-depends
,否则您将无法构建项目(甚至无法使用 stack ghci
来使用该库)。
N.B.: 从 stack-0.1.3.1 开始,stack install NAME
只是 stack build --copy-bins NAME
的同义词。 --copy-bins
选项告诉堆栈将任何可执行文件复制到 ~/.local/bin
。如果您的包只是一个没有可执行文件的库,stack install NAME
与 stack build NAME
.