我使用Rcpp开发了一个软件包,cpp包含“ windows.h”库,但是该软件包在Linux上不可用,因此我决定使用网状软件包调用python软件包来实现相同的功能,如何使软件包检测安装在哪个平台上? 如果在Windows平台上,安装我的软件包将编译cpp文件;如果在 Linux 上,安装我的软件包将不编译cpp文件,而是在内部使用我的r代码。 例如:
Windows:
myfunction<-function(){
.Call(C++ function)
}
还要避免在src文件夹中编译cpp文件,否则会出现错误:“无windows.h库”
Linux:
myfunction<-function(){
library(reticulate)
import(py_package)
}
答案 0 :(得分:1)
也许您可以重新考虑您的方法并在Windows以外的平台上提供C ++解决方案?简而言之,您可以执行以下操作:
使用例如if (Sys.info()[["sysname"]] == "Windows")
来测试Windows,然后在else分支中调用替换项
使用#define
之类的#if defined(_WIN32)
测试将#include <windows>
以及函数的主体括起来。只需返回其他平台上的任何内容即可。
许多软件包根据其所处的平台执行操作。随意查看现有资源-CRAN的资源超过12,000,GitHub也是宝库。