更改R CMD INSTALL中的CXXFLAGS以开发R软件包

时间:2011-12-28 20:37:48

标签: r rcpp

我正在尝试调试我正在开发的软件包。我使用makefile来构建,检查和安装软件包。这些包是一个Rcpp包,因此已经有一个makevars和makevars.win文件。我正在寻找的是为了特定的制定规则而改变CXXFLAGS。然后,make debugR CMD INSTALLCXXFLAGS= -Wall -pedantic -g -O0"一起运行,但常规make install将与CXXFLAGS=-O3一起运行,而不会显示任何调试信息。是否有一种很好的方法来动态更改它,而无需修改我的包,个人或系统makevars文件?

1 个答案:

答案 0 :(得分:1)

我不这么认为,因为只有一个CXXFLAGS可以绕过。但你可以在不同的'make'和`make debug'目标部分再次重新分配。

您可以保留两个版本~/.R/Makevars.normal amd ~/R/Makevars.debug并使用脚本翻转它们之间的链接...

物有所值。我只需编辑~/.R/Makevars并注释/取消注释不同的行。

编辑:基于您发布的Makefile,这样的内容如何:

install: $(PKG_NAME)_$(PKG_VERSION).tar.gz
    CXXFLAGS+="-O3" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz

debuginstall: $(PKG_NAME)_$(PKG_VERSION).tar.gz
    CXXFLAGS+="-Wall -g -O0" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz

编辑2:我刚玩过这个,它有效:

PKG_NAME=digest
PKG_VERSION=0.5.1

install: $(PKG_NAME)_$(PKG_VERSION).tar.gz
    PKG_CFLAGS="-O6" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz

debuginstall: $(PKG_NAME)_$(PKG_VERSION).tar.gz
    PKG_CFLAGS="-Wall -g -O0" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz

之后仍然读取我的~/.R/Makevars,因此无法在此处设置某些变量。但您可以在MYDEBUG=...中设置Makefile,然后在~/.R/Makevars的定义中使用它。