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