2

我对 gdtools 包有疑问。我想从源代码安装它,但不幸的是我无法在 Linux 机器上安装任何额外的库。我正在做什么来解决它,它是在安装时包含软件包:

install.packages(repos = c("http://localhost.net/cran"), type = "source", pkgs = c('gdtools'), configure.vars = c("INCLUDE_DIR=/extra/gdtools/windows/cairo-1.15.10/include/cairo"))

这让我更进一步。但是我需要再包含一个目录,指向 freetype 库:/extra/gdtools/windows/cairo-1.15.10/include/freetype2/freetype

但是当我试图将它添加到命令时它不起作用。我尝试以多种方式做到这一点,例如它不起作用:

install.packages(repos = c("http://localhost.net/cran"), type = "source", pkgs = c('gdtools'), configure.vars = c("INCLUDE_DIR=/extra/gdtools/windows/cairo-1.15.10/include/cairo /extra/gdtools/windows/cairo-1.15.10/include/freetype2/freetype"))

有人可以帮我怎么做吗?我也从 R CMD 级别尝试过。任何解决方案对我来说都是可以接受的。

4

1 回答 1

0

这可能是一个非常令人困惑的情况,因为 R 文档没有明确告诉您如何执行此操作。但是,有几个选项可以完成工作。正如您将在示例中看到的,诀窍是如何将字符串放在一起。要在 INCLUDE_DIR 或 LIB_DIR 中获取多个目录,只需在完整的双引号字符串中将多个目录嵌入单引号中。但是请注意,您不需要将-I-L标志放在字符串的开头,但必须将它们放在其他目录之前。这是因为 R 会在解析出 INCLUDE_DIR 和 LIB_DIR 后为您添加它。

这些方法的一个警告是,每个包都可以自由地实现其他变量和查找库和头文件的方法。虽然 LIB_DIR 和 INCLUDE_DIR 似乎很常用,但可以找到一个使用其他特定环境变量来代替它们的包。包也可能没有预先添加-I-L。只需了解包裹的预期。好消息是,即使变量名发生变化等,这些一般原则仍应适用。

使用配置变量

配置 vars 在命令行安装中可用

R CMD INSTALL --configure-vars="LIB_DIR='/my/lib/dir1 -L/my/lib/dir2' INCLUDE_DIR='/my/include/dir1 /my/include/dir2'" /path/to/myPackage

或在 R 内

install.packages("myPackage", configure.vars=c("LIB_DIR='/my/lib/dir1 -L/my/lib/dir2' INCLUDE_DIR='/my/include/dir1 -I/my/include/dir2'"))

使用 .Renviron

您还可以在 .Renviron 文件中为 R 设置环境变量。此文件由 R 在启动时读取。请参阅R 文档,了解 R 如何处理 .Renviron 以及它预期的位置。您可以简单地在文件中添加所需的变量,R 将在安装包时使用它们。

LIB_DIR="/my/lib/dir1 -L/my/lib/dir2"
INCLUDE_DIR="/my/include/dir2 -I/my/include/dir2"

虽然这个选项很方便,但这也意味着这些变量将用于所有包。configure vars 方法可能更适合一次性安装或需要按包设置(通过命名向量或列表完成)时。

于 2021-01-13T22:02:29.600 回答