如何覆盖 R 使用的编译器?
How to override compilers used by R?
当我尝试从源代码编译 R 包时,它使用 R 安装目录中 etc/Makeconf
中定义的编译器和设置。我如何覆盖这些设置?
我有一个 ~/.R/Makevars
文件(建议例如 here),我在其中包含了我想要的设置,但由于某些原因这些设置没有被使用。为什么不,我该如何解决这个问题?
我找不到关于 ~/.R/Makevars
和 Makeconf
的官方文档——欢迎提供链接。
过去,这个完全相同的设置对我来说可以正常工作,但最近不行了。我假设在最近的 R 版本中一定有一些改变,但我不确定什么时候。最近是否有任何可能影响此的更改?
动机和背景:
我在 macOS 上,我想使用 MacPorts 中的 gfortran
。因此我在~/.R/Makevars
中设置了FC = /opt/local/bin/gfortran-mp-11
和FLIBS = -L/opt/local/lib/gcc11 -lgfortran -lquadmath -lm
。但是,系统仍然要使用 /usr/local
中的 gfortran 安装,这在我的机器上不存在。它显然采用 etc/Makeconf
中的路径和选项。我正在使用官方 R 二进制文件。
事实证明,在我的机器上尝试构建某个包时 ~/.R/Makevars
被忽略的原因是 withr
中的错误:
使用 devtools::install_github("r-lib/withr@master")
安装 withr
的开发版本解决了这个问题。
当我尝试从源代码编译 R 包时,它使用 R 安装目录中 etc/Makeconf
中定义的编译器和设置。我如何覆盖这些设置?
我有一个 ~/.R/Makevars
文件(建议例如 here),我在其中包含了我想要的设置,但由于某些原因这些设置没有被使用。为什么不,我该如何解决这个问题?
我找不到关于 ~/.R/Makevars
和 Makeconf
的官方文档——欢迎提供链接。
过去,这个完全相同的设置对我来说可以正常工作,但最近不行了。我假设在最近的 R 版本中一定有一些改变,但我不确定什么时候。最近是否有任何可能影响此的更改?
动机和背景:
我在 macOS 上,我想使用 MacPorts 中的 gfortran
。因此我在~/.R/Makevars
中设置了FC = /opt/local/bin/gfortran-mp-11
和FLIBS = -L/opt/local/lib/gcc11 -lgfortran -lquadmath -lm
。但是,系统仍然要使用 /usr/local
中的 gfortran 安装,这在我的机器上不存在。它显然采用 etc/Makeconf
中的路径和选项。我正在使用官方 R 二进制文件。
事实证明,在我的机器上尝试构建某个包时 ~/.R/Makevars
被忽略的原因是 withr
中的错误:
使用 devtools::install_github("r-lib/withr@master")
安装 withr
的开发版本解决了这个问题。