gpt4 book ai didi

c++ - 在 Rcpp Makevars 中找到系统范围的库

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:20 26 4
gpt4 key购买 nike

我写了一个C++包“P”。它有一个 R 接口(interface)包“RP”,使用 Rcpp 构建。 P 直接使用 Make 进行编译,但为了可移植性而切换到 CMake。 CMake 用于查找系统范围库的 header (我们称其为 HF 集合)和静态库(本文其余部分中的 SL)。

我想更新RP使其能够依赖于P的CMake进化。在C++源代码RP/src/*.cpp中,包含了HF元素,当然SL是静态的链接。

RP/src/Makevars 中调用 CMake 以检索 HF 和 SL 位置的最佳方法是什么?这里的重点不是取代 Rcpp 的构建系统,而是利用 CMake 的搜索功能。

目前,P(CMake 版本)和 RP 在我的机器上构建,在 RP/src/Makevars 中使用绝对路径引用,例如:

INC_NLOPT = /usr/local/Cellar/nlopt/2.4.2_2/include
LIB_NLOPT = /usr/local/Cellar/nlopt/2.4.2_2/lib/libnlopt.a

由于我们目前在内部使用 RP,我们可以预期在我们将部署到的每台机器上安装 CMake、HF 和 SL。

最佳答案

解决方案是在 RP/src 中创建一个 CMakeFileLists.txt 文件。在此文件中,包含所需库路径的 Libvar 文件是使用 CMake file 命令编写的。 Libvar 然后使用 include 包含在 Makevars 中。

执行包根目录下的配置文件,以确保在 R 每次调用之前生成 Libvar

关于c++ - 在 Rcpp Makevars 中找到系统范围的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289360/

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