我目前正在开发一个带有一些C / C ++代码的R包,具体取决于各种外部库。
我正在寻找一种简单的方法来创建一个Makevars文件,用户不需要稍后调整(或多或少) - 以及稍后上传到CRAN。 因此,这些外部库的枚举也可以为需要相似或相同库的其他用户提供有用的示例;)
到目前为止,在文档和其他来源中,我发现了以下提示来编写Makevars文件:
${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"
PKG_LIBS
$(PNG_LIBS) -lpng
中使用PKG_LIBS
。但似乎那时使用了一个空字符串。$(SHLIB_OPENMP_CFLAGS)
和PKG_CXXFLAGS
中使用PKG_LIBS
(但这取决于您是否使用C或C ++代码,请参阅编写R扩展,第1.2.1.1节 locate fftw3
来获取库的路径。然后,我将它写在Makevars文件中。最后,我的makevars文件看起来像:
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS)
PKG_LIBS= -L/usr/local/lib -lm -lfftw3f $(PNG_LIBS) -lpng
$(SHLIB_OPENMP_CFLAGS) `${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"`
问题是,如果这个文件实际上是正确的吗?我的工作正常,但我无法判断它是否适用于其他用户? 我真的需要一个配置脚本来查找fftw3库吗?
此外,是否可以将R包上传到CRAN,用户必须调整makevars文件?