我正在尝试向CRAN提交一个在预测试期间失败的软件包
Debian上的进程。
我使用一些与nlopt优化接口的C ++代码
Rcpp / RcppArmadillo的库(使用<nlopt.hpp>
)。因此,我的软件包需要nlopt的系统版本,可以通过deb软件包libnlopt-dev安装(我将其添加到SystemRequirements字段中)。
我使用配置脚本和pkg-config检索(希望)
适当的编译器标志,然后将其发送到src / Makevars
NLOPT_LIBS=`pkg-config --libs ${PKG_CONFIG_NAME}`
NLOPT_FLAG=`pkg-config --cflags ${PKG_CONFIG_NAME}`
这种方法适用于我的系统(Ubuntu 18.04,R 3.5.2)和Travis
(Linux和Mac OS),但在Debian CRAN服务器上失败:
https://win-builder.r-project.org/incoming_pretest/PLNmodels_0.7_20190119_161032/Debian/00install.out
我添加了一些详细信息来检查标志是否正确导出
在CRAN服务器上,它们对我来说似乎还不错:至少,
在系统上找到nlopt(请参见下文
NLOPT_LIBS=-lnlopt -lm
)。但是,
<nlopt.hpp>
在后面找不到...任何帮助将不胜感激。感谢您抽出宝贵的时间阅读本文。
* installing *source* package ‘PLNmodels’ ...
Using NLOPT_LIBS=-lnlopt -lm
Using NLOPT_FLAG=
** libs
g++-8 -std=gnu++11 -I"/home/hornik/tmp/R/include" -DNDEBUG -fopenmp
-I"/home/hornik/lib/R/Library/3.6/x86_64-linux-gnu/Rcpp/include"
-I"/home/hornik/lib/R/Library/3.6/x86_64-linux-gnu/RcppArmadillo/include"
-I/usr/local/include -fopenmp -fpic -g -O2 -Wall -pedantic
-mtune=native -c RcppExports.cpp -o RcppExports.o
g++-8 -std=gnu++11 -I"/home/hornik/tmp/R/include" -DNDEBUG -fopenmp
-I"/home/hornik/lib/R/Library/3.6/x86_64-linux-gnu/Rcpp/include"
-I"/home/hornik/lib/R/Library/3.6/x86_64-linux-gnu/RcppArmadillo/include"
-I/usr/local/include -fopenmp -fpic -g -O2 -Wall -pedantic
-mtune=native -c call_nlopt_PLN_VE.cpp -o call_nlopt_PLN_VE.o
In file included from call_nlopt_PLN_VE.cpp:6:
utils.h:5:10: fatal error: nlopt.hpp: No such file or directory
#include <nlopt.hpp>
^~~~~~~~~~~
compilation terminated.
make: *** [/home/hornik/tmp/R/etc/Makeconf:173: call_nlopt_PLN_VE.o] Error 1
ERROR: compilation failed for package ‘PLNmodels’
* removing ‘/srv/hornik/tmp/CRAN/PLNmodels.Rcheck/PLNmodels’
最佳答案
nlopt的C ++接口已迁移到Debian c.f中的单独软件包。 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855600。因此,看起来特定的CRAN机器使用了Debian Testing或Stable + Backports,并且仅安装了libnlopt-dev
而不安装了libnlopt-cxx-dev
。您将必须与CRAN维护人员联系以安装此依赖项。
顺便说一句,理想情况下应在configure
脚本中避免此类错误,即,您应尝试编译一个需要nlopt.hpp
的简单程序。
关于r - 准备具有外部依赖项的CRAN R软件包(nlopt),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54321370/