我想在Rcpp项目的Makevars中将C++编译器标志设置为-O0

如果我看看/etc/R/Makeconf,我看到编译命令似乎是

$(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -c $< -o $@

自从
ALL_CXXFLAGS = $(R_XTRA_CXXFLAGS) $(PKG_CXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(CXXFLAGS)

我可以在Makevars中编辑变量$(PKG_CXXFLAGS)以添加特定库的 header ,但是我对CXXFLAGS = -O3 -pipe -g $(LTO)不满意。我还希望能够直接在Makevars中执行此操作,以便根据我的需要调整每个项目。

当我在Makevar中编辑CXXFLAGS时,什么都没有发生。可以调整该变量吗?还有其他方法吗?我知道我可以编辑~/.R/Makevars,并根据要求进行切换。我想知道是否有更健壮的方法。

最佳答案

通常,您希望在本地文件中添加PKG_*变体,例如~/.R/Makevars

这是我的(简短,编辑)部分:

## for C code
CFLAGS=               -O3 -g0 -Wall -pipe -pedantic -std=gnu99

## for C++ code
#CXXFLAGS=             -g -O3 -Wall -pipe -Wno-unused -pedantic -std=c++11
CXXFLAGS=             -g -O3 -Wall -pipe -Wno-unused -pedantic

## for Fortran code
#FFLAGS=-g -O3 -Wall -pipe
FFLAGS=-O3 -g0 -Wall -pipe
## for Fortran 95 code
#FCFLAGS=-g -O3 -Wall -pipe
FCFLAGS=-O3 -g0 -Wall -pipe

VER=-4.8
CC=ccache gcc$(VER)
CXX=ccache g++$(VER)
SHLIB_CXXLD=g++$(VER)
FC=ccache gfortran
F77=ccache gfortran
MAKE=make -j8

另一种(系统全局的)方法是创建和编辑/etc/R/Makeconf.site(或者,当/etc/R/不存在时,创建和编辑$RHOME/etc/R/Makeconf.site

关于c++ - 在Rcpp Makevars中设置CXXFLAGS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22555526/

10-11 04:22