gpt4 book ai didi

r - 准备具有外部依赖项的 CRAN R 包 (nlopt)

转载 作者:行者123 更新时间:2023-12-01 17:30:57 27 4
gpt4 key购买 nike

我正在尝试向 CRAN 提交一个在预测试期间失败的包Debian 上的进程。

我使用一些与 nlopt 优化接口(interface)的 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++ 接口(interface)已迁移到 Debian 中的单独软件包,参见https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855600 。因此,看起来特定的 CRAN 机器使用 Debian 测试或稳定+反向移植,并且仅安装了 libnlopt-dev 而没有安装 libnlopt-cxx-dev。您必须联系 CRAN 维护人员才能安装此依赖项。

顺便说一句,理想情况下,此类错误应该在 configure 脚本中消除,即您应该尝试编译一个需要 nlopt.hpp 的简单程序。

关于r - 准备具有外部依赖项的 CRAN R 包 (nlopt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54321370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com