我想在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/