r - R Makevars:如何评估预处理器标志的命令?
问题描述
当我使用已编译代码创建 R 包时Makevars
,设置附加编译标志的文件能够在构建过程中执行任意命令,以便将编译时变量标志传递给链接器 - 示例Makevars
:
MY_FLAGS = `${R_HOME}/bin${R_ARCH_BIN}/Rscript -e "cat('-lmylib')"`
PKG_LIBS = $(MY_FLAGS)
但是,如果我对预处理器标志尝试相同的技巧,它将不起作用:
MY_FLAGS = `${R_HOME}/bin${R_ARCH_BIN}/Rscript -e "cat(1)"`
PKG_CPPFLAGS = -DMyFlag=$(MY_FLAGS)
将改为发出完整的命令而不对其进行评估,除非我将其更改为使用shell
:
MY_FLAGS = ${shell ${R_HOME}/bin${R_ARCH_BIN}/Rscript -e "cat(1)"}
PKG_CPPFLAGS = -DMyFlag=$(MY_FLAGS)
...但是,根据 R 扩展手册,shell
由于不可移植性,包不应该像那样使用。
如何传递涉及运行 R 本身以评估某些命令的预处理器标志?
我意识到可以改为创建 aMakevars.in
并将需要执行的代码放入 中configure.ac
,但是是否有其他方法可以在没有配置脚本的情况下实现?
解决方案
推荐阅读
- c++ - 用于 C++ 未定义引用的 SIGIL
- javascript - 如何在 Javascript 中在此处插入文本
- or-tools - Google OR-Tools Set Fixed Start Location and Allow Arbitrary End Location
- c# - 在运行时为 Rebus 生成消息处理程序
- r - 通过无序列表加入 tibbles
- sql - 根据其他列从不同列获取最新值
- ios - 防止第一响应者在 tableview 重新加载时辞职
- java - 从 Java 和 Python 返回参数
- mysql - 从 AWS RDS 创建 MySQL 架构
- ms-access - 链接删除后访问 Office 365 表链接幽灵参考仍然存在