我是否需要在 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。
根据 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。