如何覆盖R使用的编译器



当我尝试从源代码编译R包时,它使用R安装目录中etc/Makeconf中定义的编译器和设置。如何覆盖这些设置?

我有一个~/.R/Makevars文件(建议在这里),我在那里包含了我想要的设置,但由于某种原因,这些设置没有被使用。为什么不呢?我该怎么解决?

我找不到关于~/.R/MakevarsMakeconf的官方文档——欢迎链接。

在过去,这种设置曾经对我来说是正确的,但最近不行了。我想在最近的R版本中一定有什么变化,但我不确定是什么时候。最近有什么变化可能会影响这一点吗?


动机和背景:

我在macOS上,我想从MacPorts使用gfortran。因此,我在~/.R/Makevars中设置了FC = /opt/local/bin/gfortran-mp-11FLIBS = -L/opt/local/lib/gcc11 -lgfortran -lquadmath -lm。但是,系统仍然希望在/usr/local中使用gfortran安装,这在我的机器上不存在。它清楚地采用了etc/Makeconf中的路径和选项。我使用的是官方的R二进制文件。

事实证明,在我的机器上尝试构建某个包时忽略~/.R/Makevars的原因是withr:中的一个错误

  • https://github.com/r-lib/withr/issues/169

使用devtools::install_github("r-lib/withr@master")安装withr的开发版本解决了此问题。

最新更新