在R CMD安装中更改CXXFLAGS以开发R软件包

在R CMD安装中更改CXXFLAGS以开发R软件包,r,rcpp,R,Rcpp,我正在调试我正在开发的一个包。我使用a来构建、检查和安装软件包。这些包是一个Rcpp包,因此其中已经有一个makevars和makevars.win文件。我要找的是一个只为特定的make规则而更改CXXFLAGS的方法。然后makedebug将使用cxflags=-Wall-pedantic-g-O0运行rcmdinstall“但是常规的makeinstall将在没有任何调试信息的情况下运行cxflags=-O3。有没有一种不必修改我的包、个人或系统makevars文件就可以动态更改的好方法?我

我正在调试我正在开发的一个包。我使用a来构建、检查和安装软件包。这些包是一个Rcpp包,因此其中已经有一个makevars和makevars.win文件。我要找的是一个只为特定的make规则而更改CXXFLAGS的方法。然后
makedebug
将使用
cxflags=-Wall-pedantic-g-O0运行
rcmdinstall
但是常规的
makeinstall
将在没有任何调试信息的情况下运行
cxflags=-O3
。有没有一种不必修改我的包、个人或系统makevars文件就可以动态更改的好方法?

我不这么认为,因为只有一个
cxflags
可以使用。但您可以在不同的“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

之后它仍然读取my
~/.R/Makevars
,因此某些变量不能在这里设置。但是您可以在
Makefile
中设置
MYDEBUG=…
,然后在
~/.R/Makevars

的定义中使用它。您认为R核心团队会考虑允许这样的事情吗?也没有办法通过环境变量或类似的东西来实现吗?您可以做到使用环境变量;这是一个基本的
make
功能。调试安装规则不起作用。
/bin/sh:cxflags+=-Wall-pedantic-g-O0:未找到错误
它在您的系统上工作吗?我是直接拍摄的,但我对Makefiles做过类似的操作。尝试不使用
+=
,只使用
=
。否则分配给
mycxflags
,并在
Makefile
中将其展开为
cxflags
正确。也要考虑<代码> PKGJCXFLAGS < /代码>。