5Setup.hs命令

GHC提供命令runhaskell公司龙格公司(它们是等效的)允许您运行Haskell程序,而无需首先编译它们(脚本)。低级Cabal接口使用设置.hs脚本。您应该更喜欢使用nix-style提供的高级接口生成。然而,下面的低级接口文档可能会有所帮助高级界面用户,因为它深入研究内部细节两者通用,其他地方省略。

$runhaskell公司 设置.hs [命令] [选项。。。]

对于设置.hs脚本的命令语法,运行:

$runhaskell公司 设置.hs --帮助

5.1.构建和安装系统包

$runhaskell公司 设置.hs 配置 --温室气体$runhaskell公司 设置.hs 建造$runhaskell公司 设置.hs 安装

第一行准备使用GHC构建工具的系统;对于例如,它检查系统上是否存在GHC。第二行执行实际构建,而最后两个都复制构建结果发送到某个永久地点,并向GHC登记包裹。

注释

不建议全局安装软件包。这个如何像在尼克斯一样在本地构建是建造和安装的首选方式包装。

5.2.创建二进制包

创建二进制软件包(例如用于Red Hat或Debian)时,需要创建一个tarball,可以发送到另一个系统,以便在根目录:

$runhaskell公司 设置.hs 配置 --前缀=/美国海军$runhaskell公司 设置.hs 建造$runhaskell公司 设置.hs 复制 --目标目录=/tmp/mypkg$焦油 -czf公司 我的pkg.tar.gz /tmp/mypkg/

如果包中包含库,则需要另外两个步骤:

$runhaskell公司 设置.hs 登记 --gen-script(通用脚本)$runhaskell公司 设置.hs 取消注册 --gen-script(通用脚本)

这将创建shell脚本寄存器.sh未注册.sh,其中也必须发送到目标系统。在那里打开包装后必须通过运行寄存器.sh脚本。这个未注册.sh脚本将用于包裹。可以使用类似的步骤为创建二进制包窗户。

所有命令都可以理解以下选项:

--帮助, -小时 -?

列出命令的可用选项。

--冗长的=个 -v(v) n个

设置详细级别(0-3)。正常水平为1;一个失踪的人n个默认为2。

此命令还有一个扩展版本,可以用于微调输出的详细程度。它需要形式[silent|normal|verbose|debug]旗帜,其中旗帜是的列表+用于切换各个方面的标志输出。目前,只有+呼叫者+调用堆栈支持,分别切换调用位置和调用堆栈打印(仅当Cabal使用足够新的GHC建造。)

它们支持的各种命令和其他选项包括如下所述。在简单构建基础架构中,任何其他选项将报告为错误。

5.3。runhaskell Setup.hs配置

准备构建包。通常,此步骤检查目标平台能够构建包,并发现构建期间需要的特定于平台的功能。

用户还可以使用选项调整后期阶段的行为在以下小节中列出。在简单构建的基础架构中,通过这些选项提供的值记录在私有文件中由后面的阶段阅读。

如果用户提供配置脚本已运行(请参阅系统相关参数更复杂的包),是的通过了--带hc-pkg,--前缀,--粘合剂,--图书馆馆长,--dynlibdir公司,--数据目录,--libexecdir(库执行目录)--系统配置目录选项。此外--带编译器选项传入--带hc-pkg选项以及使用指定的所有选项--配置选项被传下去。

注释

GNU autoconf对路径进行限制,包括目录构建包的基础。发生这种情况时产生的错误可能很模糊;阴谋集团试图在这种情况下进行检测和警告,但这并不完美。

在Cabal 2.0中,添加了对单个位置参数的支持runhaskell公司 设置.hs 配置这使得Cabal将特定组件配置为配置。指定的名称可以用限定库:执行:如果只是名称不明确(如名为的包第页它有一个库和一个名为第页.)这具有以下效果:

  • 后续调用阴谋集团 建造,登记等仅操作在配置的组件上。

  • Cabal需要所有“内部”依赖项(例如,可执行文件取决于在同一包中定义的库)必须在中找到数据库集通过--数据包-db(和相关标志):这些依赖关系假定为最新的。依赖项可以是使用显式指定--依赖关系只需说出名字子图书馆;例如,子库的依赖性命名foo公司表示为--依赖关系=Lib:foo=foo-0.1-abc.

  • 只有请求的组件所需的依赖项是必修的。类似地,当--精确配置已指定,只需要指定--依赖关系用于组件。(如前所述,您必须将内部依赖项指定为嗯。)

  • 内部构建工具依赖项构建工具需要依赖项加入路径随后调用设置.

完整的详细信息可以在组件化电缆建议.

5.3.1.用于构建的程序

以下选项控制用于处理源的程序包的文件:

-克, --温室气体
--ghcjs公司
--超高压断路器
--哈斯克尔套装

指定要用于生成包的Haskell实现。可以给出这些标志中的大多数。如果没有给出编译安装脚本的实现或使用解释。

-w个 路径 -wPATH(路径), --带编译器=路径

指定特定编译器的路径。如果给定,则必须匹配上面选择的实现。默认情况是搜索所选实现的常用名称。

此标志还设置--带hc-pkg选项设置为该编译器的包工具。检查的输出runhaskell公司 设置.hs 配置 -v(v)确保找到正确的包工具(或用途--带hc-pkg显式地)。

--带hc-pkg=路径

指定包工具的路径,例如。ghc-pkg.包装工具必须与指定的编译器兼容--带编译器。如果省略此选项,则默认值为根据所选编译器确定。

--带PROG=路径

指定程序的路径掠夺.Cabal已知的任何程序可以用来代替掠夺。它可以是完整路径,也可以是可以在程序搜索路径中找到的程序的名称。对于例子:--其中ghc=ghc-6.6.1--with-cpphs=/usr/local/bin/cpphs.已接受的完整列表本用户指南中未列举程序。相反,运行阴谋集团 安装 --帮助以查看列表。

--PROG-选项=OPTS(可选)

指定程序的其他选项掠夺.任何已知程序到Cabal可以用来代替掠夺例如:--alex-options=“--template=mytemplatedir/”. The选项根据空格拆分为程序选项。包含以下内容的任何选项例如,需要引用嵌入的间距--foo-options='--bar=“C:\程序 文件\栏“”.作为替代方案一次只需要一个选项,但避免了报价的需要,使用--PROG选项而不是。

--PROG选项=最佳

为程序指定一个附加选项掠夺。对于传递包含嵌入空格的选项,例如文件名使用嵌入的空格,而不是--PROG-选项意味着你不需要额外的报价。当然,如果你正在使用命令shell,您可能仍需要引用,例如--foo-options=“--bar=C:\程序 文件\栏“.

传递的所有选项--PROG-选项--PROG选项按顺序通过在configure命令行中指定。

5.3.2.安装路径

以下选项控制从包裹:

--前缀=直飞

安装的根目录。例如,对于全局安装您可能使用/usr/本地在Unix系统上,或C: \程序 文件夹在Windows系统上。其他安装路径通常是的子目录前缀,但他们不必这样。

在简单构建系统中,目录可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),美元abi,$abitag(美元)

--粘合剂=直飞

用户可能调用的可执行文件安装在此处。

在简单构建系统中,目录可能包含以下路径变量:$前缀,$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--图书馆馆长=直飞

这里安装了对象代码库。

在简单构建系统中,目录可能包含以下路径变量:$前缀,$bindir(美元),$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--dynlibdir公司=直飞

此处安装了动态库。

默认情况下,设置为$libdir/$abi,通常不等于$libdir/$libsubdir.

在简单构建系统中,目录可能包含以下路径变量:$前缀,$bindir(美元),$libdir(美元),$pkgid(美元),$包装,$版本,$编译器,美元,$拱,abi美元,$abitag(美元)

--libexecdir(库执行目录)=直飞

用户不希望直接调用的可执行文件安装在此处。

在简单构建系统中,目录可能包含以下路径变量:$前缀,$bindir美元,$libdir(美元),$libsubdir(美元),$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--数据目录=直飞

此处安装了与体系结构相关的数据文件。

在简单构建系统中,目录可能包含以下路径变量:$前缀,$bindir(美元),$libdir(美元),$libsubdir(美元),$pkgid(美元),$包装,$版本,$编译器,美元,$拱,abi美元,$abitag(美元)

--sysconfdir系统=直飞

配置文件的安装目录。

在简单构建系统中,目录可能包含以下路径变量:$前缀,$bindir(美元),$libdir美元,$libsubdir(美元),$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

此外,简单构建系统支持以下安装路径选项:

--libsubdir数据库=直飞

的子目录图书馆馆长实际安装库的位置。对于例如,在Unix上的简单构建系统中,默认图书馆馆长/usr/local/lib、和libsubdir数据库包含编译器ABI和包标识符,例如。x86_64-linux-ghc-8.0.2/mypkg-0.1.0-IxQNmCA7qrSEQNkoHSF7A,所以库将安装在/usr/local/lib/x86_64-linux-ghc-8.0.2/mypkg-0.1.0-IxQNmCA7qrSEQNkoHSF7A/.

目录可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--libexecsubdir(库执行子目录)=目录

的子目录libexecdir(库执行目录)其中私有可执行文件是安装。例如,在Unix上的简单构建系统中,默认libexecdir(库执行目录)/usr/local/libexec、和libsubdir数据库x86_64-linux-ghc-8.0.2/mypkg-0.1.0,所以私人可执行文件安装在中/usr/local/libexec/x86_64-linux-ghc-8.0.2/mypkg-0.1.0/

目录可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag美元

--数据子目录=直飞

的子目录数据目录数据文件实际在其中安装。

目录可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--文档目录=直飞

文档文件是相对于此目录安装的。

目录可能包含以下路径变量:$前缀,$bindir(美元),$libdir(美元),$libsubdir美元,$数据目录,$数据子目录,$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--HTML目录=直飞

HTML文档文件是相对于此目录安装的。

目录可能包含以下路径变量:$前缀,$bindir(美元),$libdir(美元),$libsubdir(美元),$数据目录,$数据子目录,$docdir(美元目录),$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--程序前缀=前缀

前置前缀安装的程序名。

前缀可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

--程序后缀=后缀

追加后缀安装的程序名。最明显的用途是这是为了附加程序的版本号以使其成为可能要同时安装程序的多个版本,请执行以下操作:--program-suffix=“$version”.

后缀可能包含以下路径变量:$pkgid(美元),$包装,$版本,$编译器,美元,$arch(美元),abi美元,$abitag(美元)

5.3.2.1.简单构建系统中的路径变量

对于简单的构建系统,有许多变量可以指定安装路径时使用。还指定了默认值就这些变量而言。许多变量实际上用于其他路径,如$前缀。这允许指定路径相对路径而不是绝对路径,这一点很重要用于构建可重新定位的包(请参见前缀独立性).

$前缀

表示安装根目录的路径变量。对于如果安装是可重定位的,则所有其他安装路径必须相对于$前缀变量。

$bindir(美元)

扩展为给定路径的路径变量--粘合剂configure选项(或默认选项)。

$libdir(美元)

同上,但适用于--图书馆馆长

$libsubdir(美元)

同上,但适用于--libsubdir数据库

$dynlibdir(美元)

同上,但适用于--动态libdir

$数据目录

同上,但适用于--数据目录

$数据子目录

同上,但适用于--数据子目录

$docdir(美元目录)

同上,但适用于--文档目录

$pkgid(美元)

包的名称和版本,例如。mypkg-0.2型

$包装

包的名称,例如。我的包

$版本

包的版本,例如。0.2

$编译器

用于构建包的编译器,例如。ghc-6.6.1条

美元

用于构建包装,例如。linux操作系统,窗户,奥斯克斯,免费bsd日光浴

$arch(美元)

用于构建包的计算机的体系结构,例如。i386型,x86_64码,ppc公司斯巴达克

$abitag(美元)

编译器可以用来告知不兼容的可选标记ABI独立于同一架构。GHCJS对基础数据进行编码ABI标签中的GHC版本。

abi美元

获取完全标识二进制兼容性方面的平台。扩展到相同的值作为$arch-$os编译器-$abitag如果编译器使用abi标记,$arch-$os-$编译器如果没有。

5.3.2.2.简单构建系统中的路径

对于简单构建系统,以下默认值适用:

默认安装路径

选项

Unix默认

Windows默认值

--前缀(全球)

/usr/本地

%程序文件%\Haskell

--前缀(每用户)

$HOME/.cabal

%APPDATA%\电缆

--粘合剂

$前缀/bin

$前缀\bin

--图书馆馆长

$前缀/lib

$前缀

--libsubdir数据库(其他)

$pkgid/$编译器

$pkgid\$编译器

--dynlibdir公司

$libdir/$abi

$libdir\$abi

--libexecdir(库执行目录)

$prefix/libexec

$前缀\$pkgid

--数据目录(可执行文件)

$前缀/共享

$前缀

--数据目录(图书馆)

$前缀/共享

%程序文件%\Haskell

--数据子目录

$pkgid(美元)

$pkgid(美元)

--文档目录

$datadir/doc/$pkgid

$前缀\doc\$pkgid

--sysconfdir系统

$前缀/etc

$前缀\etc

--HTML目录

$docdir/html

$docdir\html

--程序前缀

(空)

(空)

--程序后缀

(空)

(空)

5.3.2.3.前缀独立性

在Windows上,可以获取正在运行的程序的路径名。这意味着我们可以构造一个可安装的可执行程序包独立于其绝对安装位置。可执行文件可以找到它的辅助文件,通过找到自己的路径并知道与相关的其他文件$bindir(美元)。前缀独立性为特别有用:这意味着用户可以选择安装位置(即$前缀)在安装时,而不是必须在构建路径时,将其烘焙到二进制文件中。

为了实现这一点,我们要求对于Windows上的可执行文件,所有$bindir(美元),$libdir(美元),$dynlibdir(动态库目录),$数据目录$libexecdir开始具有$前缀。如果不是这样,则编译的可执行文件将烘焙所有绝对路径。

应用程序无需做任何特殊操作即可实现前缀独立性。如果发现任何文件使用获取数据文件名其他功能为此目的提供,将相对于当前文件的位置访问这些文件可执行文件。

库不能(当前)独立于前缀,因为它将链接到其文件系统位置无关的可执行文件到库包。

5.3.3.控制标志分配

标志分配(请参阅条件和标志的解决方案)可以使用以下命令行选项进行控制。

-(f) 标志名 -(f) -标志名

强制指定的标志真的(如果前面有-). 相同标志的后续规范将覆盖更早,即指定-fdebug(电子标签) -f-调试等于-f-调试

--旗帜=鞭毛规格

等同于-(f),但允许在一次。参数是一个以空格分隔的标记名列表(to迫使国旗真的),前面可以加一个-(以强制). 例如,--flags=“调试 -功能1 特征2“等于-fdebug(电子标签) -f特征1 -咖啡2.

5.3.4.构建测试套件

--启用测试

这个建造阶段。检查测试所需的依赖项套房。如果使用此选项配置包,它将可以使用测试命令之后的命令包已生成。

--禁用测试

(默认)在建造阶段。不要只检查测试套件所需的依赖项。将无法调用测试命令,无重新配置包。

--启用-平均

使用Haskell构建库和可执行文件(包括测试套件)已启用计划覆盖范围。运行测试套件将自动使用HPC生成覆盖率报告。

--禁用平均值

(默认)不启用Haskell Program Coverage。

5.3.5.其他选项

--用户

按用户进行安装。这将更改默认安装前缀。它还允许用户的包数据库要满足的依赖项,在添加到全局数据库。这也意味着默认值为--用户对于任何后续安装命令,作为包在全局数据库中注册不应依赖于包在用户数据库中注册。

--全球

(默认)执行全局安装。在这种情况下,包装全局包数据库必须满足依赖关系。全部用户的包数据库中的包将被忽略。通常情况下最后的安装步骤将需要管理权限。

--数据包-db=数据库

允许通过此额外的程序包数据库数据库除了全局包数据库之外。用户程序包数据库中的所有程序包都将被忽略。这个对…的解释数据库是特定于实现的。通常情况下,它会是一个文件或目录。并非所有实现都支持任意程序包数据库。

这会将一个额外的数据库推送到数据库堆栈上。这个--全球--用户模式开关分别添加了[Global]和[Global,User]dbs到初始堆栈。有一个编译器实现全局数据库必须首先出现在堆栈中的约束,如果用户一出现,它必须立即出现在全局数据库。

要重置堆栈,请使用--package-db=清除.

--国际病童协会=IPID

指定已安装的包标识符包的建造;此标识符传递给GHC并作为基础链接器符号和身份证件中的字段ghc-pkg注册。当一个包有多个组件时,实际组件标识符是从这个标识符派生出来的。例如,a附属图书馆foo公司来自程序包p-0.1-公元前将获得标识符p-0.1-abcd-foo.

--cid公司=CID

指定组件标识符正在建造的组件的;这仅在配置单个组件时有效。

-O【n】, --使能优化[=n]

(默认)使用优化标志生成(如果可用)。这是适合生产使用,需要更多时间来更快地构建库和程序。

可选的n个值是优化级别。一些编译器支持多个优化级别。范围是0到2。级别0等于--禁用优化,级别1是如果没有,则默认n个给出了参数。2级是更高的优化如果编译器支持的话。级别2可能会导致更长的时间编译时间和更大的生成代码。

启用优化后,Cabal将通过-氧气到C编译器。

--禁用优化

构建而不优化。这适合开发:建筑将更快,但生成的库或程序将更慢的。

--使能保护

在启用分析的情况下生成库和可执行文件(对于支持作为单独模式进行评测的编译器)。为了这个目的工作,此包使用的所有库也必须已生成具有分析支持。对于库,这涉及到构建除了普通实例之外,库的其他实例非剖析实例。对于可执行文件,它会更改单个要以分析模式构建的可执行文件。

此标志涵盖库和可执行文件,但可以是--启用库分析标志。

另请参见--剖面详图下面的标志。

--防止残疾的

(默认)不在生成的库和可执行文件。

-第页, --启用-内存保护

与相同--使能保护但它仅适用于库。因此,这将生成除了正常的非概要分析实例外,还可以使用库。

这个--使能保护标志控制这两者的分析模式库和可执行文件,但如果需要不同的模式库与可执行文件,然后使用--启用-内存保护也。

--防止残疾的

(默认)不生成库的其他分析版本。

--剖面详图=级别

一些支持评测的编译器,特别是GHC,可以分配项目不同部分的成本不同可以完成此操作的粒度或细节级别。特别是对于GHC来说,这个概念被称为“成本中心”,而GHC可以自动添加成本中心,并且可以以不同的方式进行添加。

此标志涵盖库和可执行文件,但可以是--图书馆详细资料标志。

目前,对于GHC以外的编译器,此设置被忽略。这个阴谋集团目前支持的级别为:

违约

对于GHC,这使用导出函数图书馆和顶级功能用于可执行文件。

没有人

此组件中的任何代码都不会分配任何成本。

导出函数

成本将按所有顶层的粒度分配从每个模块导出的函数。特别是在GHC中用于非线函数。

顶级功能

成本将按所有顶层的粒度分配每个模块中的函数,无论它们是从模块与否。特别是在GHC中,这是针对非线型功能。

所有功能

成本将按照中所有功能的粒度进行分配每个模块,无论是顶层还是本地。特别是在GHC中,这适用于非线顶层或where-bound函数或值。

后期完成

与顶层类似,但成本将在之后分配给顶层定义优化。这大大降低了分析开销,同时提供了类似的细节级别作为顶级功能。然而,这意味着引入了功能GHC在优化过程中也会显示在配置文件中。相对应-fprof平板如果支持和-fprof-自动顶否则。

晚的

当前是最新版本的别名

此标志是Cabal-1.24中的新标志。以前的版本使用了等效的属于没有人以上。

--图书馆详细资料=级别

与相同--剖面详图以上,但仅适用于库。

库和可执行文件的级别由--剖面详图标志,但如果需要不同的级别对于库与可执行文件,则使用--图书馆详细资料也。

--enable-library-vanilla公司

(默认)构建普通库(与分析相反库)。这与--启用-内存保护选项。如果同时启用这两个选项,则会得到两者兼而有之。

--残疾-布拉里-瓦尼拉

不要建造普通的图书馆。这与--启用-内存保护只构建分析库,而不是分析和普通库。

--ghci的enable-library

(默认)构建适用于GHCi的库。

--ghci禁用内存

并非所有平台都支持GHCi,实际上在一些平台上,正在尝试构建GHCi库失败。在这种情况下,此标志可以用作解决方法。

--启用-split-objs

使用GHC-拆分-objs功能。这个通过以下方式减少使用库的可执行文件的最终大小允许他们只与他们使用的位链接,而不是整个图书馆。缺点是建造图书馆需要更长,占用更多内存。

--禁用拆分对象

(默认)不要使用GHC-拆分-objs功能。这使得更快地构建库,但使用图书馆会更大。

--启用可执行跳闸

(默认)安装二进制可执行程序时,运行二进制文件上的程序。这可以大大减少可执行二进制文件的大小。它通过移除调试信息和符号。而这样的额外信息对于使用传统调试器调试C程序很有用很少有助于调试Haskell编译器生成的二进制文件。

并非所有Haskell实现都会生成本机二进制文件。对于这种情况实现此选项无效。

--禁用可执行跳闸

在安装期间不要剥离二进制可执行文件。你可能想要要在需要使用gdb调试程序时使用此选项如果要调试包含以下内容的程序的C部分Haskell和C代码。另一个原因是,如果您正在构建具有剥离管理策略的系统的包本身(例如一些Linux发行版)。

--启用共享

生成共享库。这意味着要单独运行编译器在大多数平台上生成所需的位置无关代码。

--禁用共享

(默认)不生成共享库。

--启用静态

构建静态库。这就过去了-静态clib至GHC(可用iOS和8.4个以上平台)。结果是存档.a个包含所有相关haskell库的组合。

--禁用静态

(默认设置)不生成静态库。

--启用可执行的动态

将依赖Haskell库动态链接到可执行文件中。可执行文件的库依赖项必须构建为共享对象。这意味着--启用共享除非--禁用共享已明确指定。

--禁用可执行动态

(默认)将依赖的Haskell库静态链接到可执行文件中。非Haskell(C)库仍然是动态链接的,包括libc、,因此结果仍然不是完全静态的可执行文件除非--启用可执行静态给出了。

--启用可执行静态

构建完全静态的可执行文件。这会将所有依赖库静态链接到可执行文件中,包括libc。

--禁用可执行静态

(默认设置)不要生成完全静态的可执行文件。

--配置选项=str

外部的额外选项配置脚本(如果使用了脚本)(请参阅系统相关参数).可以有几个这样的选项。

--不包括的直径=路径

用于搜索C头文件的额外目录。你可以用这个多次标记以获取目录列表。

如果您有标准的系统标头,则可能需要使用此标志文件位于非标准位置程序包.cabal公司文件。使用此选项的效果与附加目录目录包括直径每个中的字段程序包中的库和可执行文件.cabal公司文件。这个当然,其优点是您不必在全部。构建包时将使用这些额外的目录对于库,它也保存在包注册中信息,并在编译使用库的模块时使用。

--类外目录=路径

用于搜索系统库文件的额外目录。你可以使用此标志多次用于获取目录列表。

--框架外工作直径=路径

用于搜索框架的额外目录(仅限OS X)。你可以使用此标志多次用于获取目录列表。

如果您有标准系统,则可能需要使用此标志库位于非标准位置,该位置在程序包.阴谋集团文件。使用此选项的效果与附加目录目录类外目录中的字段包中的每个库和可执行文件.cabal公司文件。这个当然,其优点是您不必在全部。构建包时将使用这些额外的目录对于库,它也保存在包注册中信息,并在编译使用库的模块时使用。

--依赖[=pkgname=IPID]

指定应将特定依赖项用于特定程序包名称。特别是,它声明任何对pkgname公司在一个取决于构建应决心国际病历.

--承诺的依赖[=pkgname=IPID]

非常像--依赖但是包裹不需要已经安装。这在尝试启动多个组件时很有用与cabal的multi-repl或Haskell Language Server等项目的会话。

启用的几个检查--依赖关系``s 禁用 对于 许诺的 依赖关系, 所以 更喜欢 使用 ``--依赖如果你知道依赖性已安装。

--精确配置

这使得Cabal要求每个依赖项都显式使用指定--依赖,而不是使用Cabal的(非常简单)依赖关系求解器。这对于编程使用Cabal的API,如果您没有指定足够的内容,就会在其中出错--依赖旗帜。

-c(c) 约束 -约束, --约束=约束

将涉及包的解决方案限制为给定版本边界、标志设置和其他属性。

以下仅考虑安装计划,其中酒吧,如果使用,则仅限于版本2.1:

$阴谋集团 安装 --约束=“巴==2.1”

以下内容可防止酒吧根本不会被使用:

$阴谋集团 安装 --约束=“bar<0”

版本边界的语法与取决于构建.此外,这里还提供了额外的伪版本边界:

  • 安装将包修复为已安装的版本。通常用于GHC提供的包装与允许更新,例如。,--allow-newer='*:base' --constraint='基础 已安装'.

  • 来源将包修复到本地源副本。

#要求 那个  版本 属于 酒吧  习惯于 那个  已经 安装 在里面
#这个 全球的 包裹 数据库。$阴谋集团 安装 --约束=“已安装酒吧”

#要求 这个 地方的 来源 复制 属于 酒吧   已使用。#(注:  默认情况下, 如果 我们   地方的 包裹 我们 #自动地 使用 它, 所以   通常地   必要的 #指定 这个。)
$阴谋集团 安装 --约束=“条形源”

此外,我们可以用指定标志赋值+旗帜-旗帜或启用测试(测试)和基准(长凳)套房:

#要求 酒吧   安装 具有 这个 foo公司 旗帜 转动  #这个 巴兹 旗帜 转动 关闭。$阴谋集团 安装 --约束=“bar+foo-baz”

#要求 那个 酒吧  测试 套房  基准 启用。$阴谋集团 安装 --约束=“棒测试” --约束=“酒吧工作台”

要指定多个约束,可以传递约束选项多次。

默认情况下,约束仅适用于生成依赖项(取决于构建),生成的生成依赖项依赖关系等。约束通常不适用于的依赖项设置.hs任何包的脚本(自定义设置:设置取决于)它们也不适用于构建工具(构建工具依赖项)或构建的依赖项工具。将约束显式应用于设置或生成工具依赖性,可以添加限定符设置任何约束条件如下:

#例子 使用 属于 这个 “任何” 限定符。 这个 约束#应用  包裹 酒吧 在任何地方 在里面 这个 依赖关系 图表。$阴谋集团 安装 --约束=“any.bar==1.0”
#例子 使用 属于 “设置” 限定符。#这个 约束 应用  包裹 酒吧 什么时候   #依赖关系 属于 任何 设置.hs 脚本。$阴谋集团 安装 --约束=“setup.bar==1.0”

#这个 约束 应用  包裹 酒吧 什么时候   #依赖关系 属于 这个 设置.hs 脚本 属于 包裹 食品。$阴谋集团 安装 --约束=“foo:setup.bar==1.0”
--禁用响应文件

为较旧版本的程序(如应收账ld个不支持响应文件参数(即。@文件参数)。只有当您指定自定义ar时,您才可能需要此标志可执行文件。对于系统应收账或是捆绑在一起的温室气体Windows阴谋集团应该做正确的事,因此应该通常不需要此标志。

5.4.runhaskell Setup.hs内部版本

执行制作此包所需的任何预处理或编译准备安装。

此命令采用以下选项:

--PROG-选项=OPTS(可选), --PROG选项=最佳

这些与选项配置。与在configure步骤中,在构建步骤中指定的任何程序选项都是非持久性,但仅用于该调用。选项在生成步骤中指定的在配置步骤中指定的任何选项。

5.5.runhaskell Setup.hs黑线鳕

使用生成包的文档黑线鳕.默认情况下,只生成公开模块的文档(但请参阅--可执行文件--内部标志)。

此命令采用以下选项:

--胡瓜

生成文件dist/doc/html/pkgid公司.txt文件,可以是转换者胡格尔用于搜索的数据库。这相当于运行黑线鳕使用--胡瓜标志。

--html定位=url

为的HTML文档位置指定模板必备软件包。替换(看见上市)应用于模板获取每个包的位置,将使用通过生成的文档中的超链接。例如以下命令生成指向的链接黑客攻击页:

$runhaskell公司 设置.hs 黑线鳕 \--html位置='http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'

这里引用参数是为了防止被shell替换。如果如果省略此选项,则获取每个包的位置使用软件包工具(例如。ghc-pkg).

--可执行文件

同时运行黑线鳕用于所有可执行程序的模块。默认情况下黑线鳕仅在导出的模块上运行。

--内部

运行黑线鳕为所有人模块,包括未暴露的模块,以及黑线鳕生成文档用于未报告的符号。

--css公司=路径

争论路径表示CSS文件,该文件传递给黑线鳕并用于设置生成的文档的样式。这只是为了替代默认样式黑线鳕使用。

生成黑线鳕与集成的文档Hs颜色首先,Hs颜色运行以生成彩色代码。然后黑线鳕运行到生成HTML文档。文档中显示的每个实体都是链接到彩色代码中的定义。

--hs彩色-css=路径

争论路径表示CSS文件,该文件传递给Hs颜色如中所示

$runhaskell公司 设置.hs hs颜色 --css公司=*路径*

5.6.runhaskell设置.hs hscolour

使用生成HTML格式的彩色代码Hs颜色.的彩色代码导入导出的模块dist/doc/html/pkgid公司/型钢混凝土.

此命令采用以下选项:

--可执行文件

同时运行Hs颜色所有可执行程序的源代码。彩色代码已放入dist/doc/html文件/pkgid公司/可执行文件/型钢混凝土.

--css公司=路径

将给定的CSS文件用于生成的HTML文件。CSS文件定义用于给代码着色的颜色。请注意,此副本将给定的CSS文件添加到具有生成的HTML文件的目录(重命名为hs颜色.css)而不是链接到它。

5.7.runhaskell Setup.hs安装

将文件复制到安装位置和(对于库包)向编译器注册包,即使模块包含可用于程序的。

此外,对于GHC编译外工件目录被复制(如果存在)。GHC插件可以在子文件夹中存储额外数据。(例如。编译外工件/PLUGIN_NAME/HS_MODULE.txt)

这个安装位置取决于选项到runhaskell Setup.hs配置.

此命令采用以下选项:

--全球

在系统范围的数据库中注册此软件包。(这是默认,除非runhaskell公司 设置.hs 配置 --用户已提供选项配置命令。)

--用户

在用户的本地包数据库中注册此包。(这是默认值,如果runhaskell公司 设置.hs 配置 --用户已提供选项配置命令。)

5.8.runhaskell Setup.hs副本

复制文件而不进行注册。此命令主要用于到那些创建二进制包的人。

此命令采用以下选项:

--目标目录=路径

指定要在其中放置已安装文件的目录。如果是这样未给定,则假定为根目录。

5.9.runhaskell Setup.hs寄存器

向编译器注册此包,即使模块包含可用于程序的。这只对图书馆有意义包装。请注意安装命令包含此操作。这个单独命令的主要用途是在安装后的步骤中用于二进制包。

此命令采用以下选项:

--全球

在系统范围的数据库中注册此软件包。(这是默认设置。)

--用户

在用户的本地包数据库中注册此包。

--gen-script(通用脚本)

生成包含以下内容的脚本,而不是注册包用于执行注册的命令。在Unix上,此文件称为寄存器.sh,在Windows上,寄存器.bat。此脚本可能是包含在二进制包中,在解包包后运行在目标系统上。

--gen-pkg-配置[=路径]

生成包注册而不是注册包文件(或目录,在某些情况下)。这仅适用于支持包注册文件的编译器,这些文件位于现在只是GHC。该文件应与编译器的用于注册包的机制。此选项主要用于用于包装系统。如果可能,请使用--gen-script(通用脚本)选项相反,因为它在Haskell实现中更具可移植性。这个路径是可选的,可用于指定特定要生成的输出文件。否则,默认情况下,文件是包名称和版本.conf文件扩展。

如果包需要多个目录,则此选项输出一个目录注册:如果内部/便利图书馆已使用。这些配置文件名经过排序,以便按顺序注册。

--就地

注册包以直接从生成树使用,而不需要需要安装它。这对测试很有用:没有需要在修改后安装包,只需重新编译并测试。

此标志不会创建build-tree-local包数据库。仍然在一个用户或全局数据库中注册包。

然而,也有一些警告。它仅适用于GHC(目前)。只有当您的包不依赖于任何安装了补充文件-普通Haskell库应该是好的。

5.10.runhaskell Setup.hs未注册

使用编译器取消注册此包。

此命令采用以下选项:

--全球

在系统范围的数据库中取消注册此包。(这是默认设置。)

--用户

在用户的本地包数据库中取消注册此包。

--gen-script(通用脚本)

生成包含以下内容的脚本,而不是取消注册包执行注销的命令。在Unix上,此文件称为未注册.sh,在Windows上,未注册.bat。此脚本可能包含在二进制包中,以便在目标系统上运行。

5.11.runhaskell Setup.hs清洁

删除在配置,建造,黑线鳕,登记取消注册步骤,以及任何文件和中列出的目录超薄膜字段。

此命令采用以下选项:

--保存-配置, -秒

保留配置信息,因此无需运行在构建之前再次执行配置步骤。

5.12.runhaskell Setup.hs测试

运行包描述文件中指定的测试套件。旁白从以下标志中,Cabal接受一个或多个测试的名称之后命令行上的套件测试。提供后,Cabal将运行只有指定的测试套件,否则,Cabal将运行中的所有测试套件包裹。

--建筑工人=直飞

Cabal放置生成的构建文件的目录(默认:距离). 测试日志将位于测试子目录。

--测试长度=模板

用于命名可读测试日志的模板;路径是相对于距离/测试。默认情况下,日志根据模板$pkgid-$test-suite.log,以便每个测试套件将被记录到自己的可读日志文件中。模板允许的变量有:$pkgid(美元),$编译器,美元,$拱,abi美元,$abitag(美元),$测试套件、和$结果.

--测试机器长度=模板

机器可读日志的路径,相对于距离/测试. The默认模板为$pkgid.log。允许的模板变量为:$pkgid(美元),$编译器,美元,$arch(美元),abi美元,$abitag(美元)$结果.

--测试显示详细信息=过滤器

确定单个测试用例的结果是否显示在终端。可能是总是(始终显示),从未(从不显示),失败(仅显示失败的结果),流动(全部显示实时结果)和直接的(与流动但没有日志文件,可能更漂亮)。

默认值为直接的:它使测试输出保持不变,并且不会制作日志。这允许彩色输出,这在测试中很流行框架。(另一方面,流动创建日志但丢失着色。)

--测试选项=模板

为测试可执行文件提供额外的选项。

--测试选项=模板

为测试可执行文件提供额外的选项。没有必要引用包含空格的选项,因为假定只有一个选项,所以选项不会在空格上分割。

--测试记录器=文件

用于设置和拆除测试的包装脚本/应用程序执行上下文。文本可执行路径和测试参数为作为参数传递给包装器,包装器应该将返回测试的返回代码,以及stdout/stderr的副本。

5.13.runhaskell Setup.hs工作台

运行包描述文件中指定的基准。旁白根据以下标志,Cabal接受一个或多个基准的名称之后在命令行上长凳。提供后,Cabal将运行只有指定的基准,否则,Cabal将运行中的所有基准包裹。

--基准选项=模板

为基准可执行文件提供额外的选项。

--基准期权=模板

为基准可执行文件提供额外的选项。没有必要引用包含空格的选项,因为假定只有一个选项,因此选项不会在空间上分割。

5.14.runhaskell设置.hs sdist

在文件中创建与系统和编译器无关的源代码分发包裹-版本.塔尔.gz在中距离子目录,用于分发给包生成器。解压缩后,中列出的命令此部分将可用。

此分发中的文件是包描述文件,安装脚本,包中命名的模块的源描述文件和中指定的文件许可证文件,主-is,c源,asm源,cmm源,js-源,数据文件,额外的源文件超doc文件领域。

此命令采用以下选项:

--快照

将今天的日期(以“YYYYMMDD”格式)附加到的版本号生成的源包。原始包不受影响。