我正在创建一个 R 包,它使用第三方(闭源)API 将 .edf 文件导入 R(来自 SR Research Eyelink 眼动仪)。已经让这个在 Linux 上工作的人分享了他的代码,我能够让它在 Mac 上工作。这是将 src/Makevars 文件更改为指向安装在 mac 上的 API 的问题:
PKG_LIBS=-framework edfapi -F/Library/Frameworks/
为了使其在 linux 中工作,Makevars 需要:
PKG_LIBS=-L/usr/local/lib -ledfapi -lm
我知道对于特定于 Windows 的选项,我需要创建一个 Makevars.win 文件,但是如何更改 Mac 与 Linux 的构建选项?我想做类似的事情:
if [[ `uname` -eq Darwin ]] ; then
PKG_LIBS=-framework edfapi -F/Library/Frameworks/
fi
if [[ `uname` -eq Linux ]] ;then
PKG_LIBS=-L/usr/local/lib -ledfapi -lm
fi
但是将其放入 Makevars 是行不通的。从研究来看,我似乎需要在configure
和中组合设置选项Makevars
,但我还没有完全弄清楚。我对 R 编程很满意,并且知道足够的 C++ 来制作一些基本功能,但我仍然不了解构建过程中涉及的所有细微差别。如果有人可以解释configure/configure.ac
vs的主要目的,Makevars/Makevars.in
那也会有所帮助。
理想情况下,我想将 API 与 R 包捆绑在一起,并在特定于平台的文件夹中拥有不同的版本。API 仅包含 3 个头文件和一个二进制文件(并且很少更改)。我意识到这会阻止我将包裹放在 CRAN 上,但这很好。我已经成功地使用不同文件夹中的 API 文件构建了包,但在运行时它仍然在标准位置(/Library/Frameworks)中查找它。我意识到这是一个更重要的问题,我也可以创建一个单独的帖子。