有关 x64 的 .o 文件的信息不可用:使用 Rcpp 检查 R 包的注意事项

Leo*_*pez 11 r devtools rcpp rtools

我使用Windows和刚刚更新到R 4.0.3(带RStudio1.3.959),然后跑掉了R检查使用我的包之一Rcpp,并RcppArmadillo和我得到了以下注释:

> checking compiled code ... NOTE
  Note: information on .o files for i386 is not available
  Note: information on .o files for x64 is not available
  File 'C:/Users/NIR_Workstation/Documents/GitHub/prospectr.Rcheck/prospectr/libs/i386/prospectr.dll':
    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
    Found 'exit', possibly from 'exit' (C), 'stop' (Fortran)
    Found 'printf', possibly from 'printf' (C)
  File 'C:/Users/NIR_Workstation/Documents/GitHub/prospectr.Rcheck/prospectr/libs/x64/prospectr.dll':
    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
    Found 'exit', possibly from 'exit' (C), 'stop' (Fortran)
    Found 'printf', possibly from 'printf' (C)
Run Code Online (Sandbox Code Playgroud)

当我在R 4.0.2. 我试图找出我的包裹里发生了什么,但没有成功。

我也试过这个(与R 4.0.3):

Rcpp::Rcpp.package.skeleton("aTest", example_code = TRUE)

rcmdcheck::rcmdcheck(error_on = "warning", check_dir = "check")

Run Code Online (Sandbox Code Playgroud)

我得到了与我的包的一个输出相同类型的 NOTE。再次R 4.0.2为此注意不输出。

对这个注意事项有什么想法吗?或者至少对我可以尝试找出发生了什么的事情有任何建议?

提前致谢。


更新的问题

我想在更新我的问题之前进行额外的测试。

他们来了:

R 4.0.3在其他几台 Windows 机器上进行了全新安装rtoolsRStudio以及devtools运行下面示例所需的包(没有预编译的对象)。我设法用来 reprex()重现我为另一个使用Rcpp.package.skeleton()以下创建的模板包获得的注意:

> checking compiled code ... NOTE
  Note: information on .o files for i386 is not available
  Note: information on .o files for x64 is not available
  File 'C:/Users/NIR_Workstation/Documents/GitHub/prospectr.Rcheck/prospectr/libs/i386/prospectr.dll':
    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
    Found 'exit', possibly from 'exit' (C), 'stop' (Fortran)
    Found 'printf', possibly from 'printf' (C)
  File 'C:/Users/NIR_Workstation/Documents/GitHub/prospectr.Rcheck/prospectr/libs/x64/prospectr.dll':
    Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
    Found 'exit', possibly from 'exit' (C), 'stop' (Fortran)
    Found 'printf', possibly from 'printf' (C)
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020 年 10 月 18 日创建

Rcpp::Rcpp.package.skeleton("aTest", example_code = TRUE)

rcmdcheck::rcmdcheck(error_on = "warning", check_dir = "check")

Run Code Online (Sandbox Code Playgroud)

除了上述测试之外,我还运行了相同的代码:

  • R 4.0.3rtools35

  • R 4.0.2rtools40

  • R 4.0.3在 linux ( x86_64-pc-linux-gnu (64-bit))

对于这三个测试,检查完全通过。

总之,问题只出现在R 4.0.3with rtools40。假设问题来自 是否正确rtools40?如果是,对 CRAN 检查/提交有何影响?

谢谢

Gor*_*yth 13

在过去的几个月里,我一直有同样的问题。几个月前,我在 Windows 的 R-devel 中注意到了同样的问题(中止的误报等)。

该问题并非特定于 Rcpp。我可以为仅包含 Fortran、仅包含 C 或仅包含 C++ 的包重现注释。我在 Windows 命令提示符下使用 Rtools40 和 R 4.0.3 在 PATH 中运行 R CMD。NOTE 目前出现在 Bioconductor 3.12 检查数百个包中,似乎是包含任何 Fortran、C 或 C++ 源代码的任何包。正如您所指出的,NOTE 仅在 Windows、R 4.0.3 或更高版本和 Rtools40 中出现。对于 Linux 或 Mac 下的相同软件包或旧版本的 R,不会出现 NOTE 。

两天前我向 CRAN 提交了一个包,但 CRAN 没有将 NOTE 识别为问题,即使我在同一个包上运行 R CMD 检查时看到了 NOTE。所以我不认为它会导致你提交 CRAN 的问题。

  • 有趣的是它也不咬 CRAN。不过,如果能够深入了解的话,那就太好了…… (3认同)
  • 我确认,在带有 R v4.0.3、R studio v1.3.1093、Rtools 4.0 的 Windows 10 上,我们对中止、退出和 printf 具有相同的“误报”,这在 https://win-builder.r-project 上。 org/ 未报告。 (3认同)
  • 更新:2021 年 6 月仍然是一个问题。 (3认同)
  • 我可以确认,在使用我今天下载的 R 4.0.3 和 R 工具 4.0 的 Windows 10 企业版上,这仍然是一个问题。这是该错误出现在 SO 上的两个月平均值。 (2认同)