如何仅使用“-auto”成本中心编译某些模块?

Posted

技术标签:

【中文标题】如何仅使用“-auto”成本中心编译某些模块?【英文标题】:How do I compile only certain modules with '-auto' cost centers? 【发布时间】:2013-05-02 03:41:58 【问题描述】:

我正在使用 ghc 的选项 -fprof 选项来分析程序以自动创建成本中心。如果我只有来自特定模块的成本中心,分析输出会更容易理解。

首先将所有内容编译为ghc --make main.hs -rtsopts -prof,然后将一些模块重新编译为ghc -c SomeMod.hs -rtsopts -prof -fprof-auto,这对我来说似乎是正确的解决方案。

来自GHC manual 选项上的-fprof

这些不必一致地用于程序中的所有模块。

但是,如果您这样做,那么一旦您再次尝试编译 main.hs,重新编译检查器就会检测到“标志已更改”。我还尝试了ghc --make main.o,认为我应该从前面任一步骤中创建的目标文件开始,但没有成功链接。

我碰巧发现将-# OPTIONS_GHC -fprof-auto #- pragma 放在适当的模块中可以达到预期的目标。这真的是唯一的方法吗?

【问题讨论】:

【参考方案1】:

使用OPTIONS_GHC(如您所见)是我的做法。假设您使用 cabal,我想不出任何其他方法。

【讨论】:

以上是关于如何仅使用“-auto”成本中心编译某些模块?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx编译配置脚本篇- 模块配置脚本auto/modules

多模块项目仅编译父pom不编译子module

Nginx编译配置脚本篇- 源码相关变量脚本auto/sources

Nginx编译配置脚本篇- 编译器相关脚本

如何在“发布”版本中不编译某些 Android 菜单项

Android Studio怎么用