1

我正在尝试调试我正在开发的包。我使用makefile来构建、检查和安装软件包。这些包是一个 Rcpp 包,因此其中已经有一个 makevars 和 makevars.win 文件。我正在寻找的是仅针对特定的制作规则更改 CXXFLAGS 。然后make debug将运行R CMD INSTALLCXXFLAGS= -Wall -pedantic -g -O0"常规make install将在CXXFLAGS=-O3没有任何调试信息的情况下运行。有没有一种无需修改我的包、个人或系统 makevars 文件即可动态更改它的好方法?

4

1 回答 1

2

我不这么认为,因为只有一个CXXFLAGS可以去。但是您可以在不同的“make”和“make debug”目标部分重新分配。

你可以只保留两个版本~/.R/Makevars.normal~/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.

于 2011-12-28T20:53:03.503 回答