我是否需要在 Imports 和 LinkingTo 中指定 Rcpp 以避免 Makevars 文件?

Do I need to specify Rcpp in both Imports and LinkingTo in order to avoid a Makevars file?

根据 Rcpp FAQ(2.15。新的“无链接”功能如何),自 Rcpp 版本 0.11.0 以来,我们可以避免在 Makevars 文件中指定 LAPACK/BLAS/Fortran,并且在事实上,如果我们遵循这些说明,就可以完全避免使用 Makevars。

... only two things are required: • an entry in DESCRIPTION such as Imports: Rcpp (which may be versioned as in Imports: Rcpp (>= 0.11.0)), and • an entry in NAMESPACE to ensure Rcpp is correctly instantiated, for example importFrom(Rcpp, evalCpp).

但不是为 Rcpp 添加 Imports 行,LinkingTo 也可以吗?也就是说,我可以使用:

LinkingTo: Rcpp (>= 0.11.0)

而不是:

Imports: Rcpp (>= 0.11.0)

或者两者都需要?

简而言之,不,正如我们所说,您需要两者,因为它们有不同的用途。

LinkingTo: 就所有意图和目的而言,是 R 告诉编译器所需 header 文件所在位置的指令。针对 Rcpp 构建的软件包必须 有这个。

Imports: 处理包命名空间和包加载/附加时的初始化。 Rcpp 是 "almost" 纯粹 header-based 但需要执行一些代码。

所有这些都记录在 Writing R Extensions 手册中的 R 和我们的包 vignettes 中的 Rcpp。