使用Rcpp编译R包时出现冲突声明错误,但g++编译正常
求助:如何在Rcpp包中配置依赖外部静态库HDFql?
各位大佬好,我最近在折腾一个依赖外部库HDFql的Rcpp包,碰到了配置上的坎儿,想请大家帮忙指点下。
先说说目前的进展:
- 我已经能成功编译纯C++文件:用命令
g++ example.cpp -I./include/HDFql ./HDFql/libHDFql.a -fopenmp -ldl就能正常编译运行,其中./include/HDFql文件夹放着HDFql的所有头文件,./HDFql/libHDFql.a是对应的静态库文件。 - 现在我想把这个依赖迁移到Rcpp包中,但不知道怎么在包的结构里实现和上面g++命令等效的配置。我的包目录结构大概是这样的:
|- R | |- script.r |- src | |- HDFql | |- libHDFql.a | |- include | |- HDFql | |- 各种HDFql头文件 | |- 我的Rcpp实现文件.cpp
我现在搞不清楚该怎么修改Rcpp包的 Makevars(Windows环境对应Makevars.win)文件,来指定头文件路径、链接这个静态库,同时加上 -fopenmp 和 -ldl 这些编译链接选项。有没有熟悉Rcpp包配置的朋友能给我讲讲具体的配置步骤呀?
内容的提问来源于stack exchange,提问作者mikeck




