我试图告诉我的包gcc用来编译C++代码而不是代码clang.为什么CXX我的Makevars文件中没有使用我的标志?
(我期待/希望解决方案是非常简单的,我忽略了.)
我的理解(参见参考资料)我可以CXX*在其中指定标志
src/Makevars 在包中,或~/.R/Makevars 但是,我不能让选项1工作,只有选项2.
以下是显示我正在使用的构建选项的屏幕截图.在每种情况下,我都会显示Makevars和/.R/Makevars文件,以显示我在每种情况下使用的是哪一个.
选项1: src/Makevars
在这里我指定CXX11 = /usr/local/bin/g++-7内部src/Makevars.构建消息说它正在构建clang
选项2:〜/ .R/Makevars
在这里我指定CXX11 = /usr/local/bin/g++-7内部~/.R/Makevars.构建消息显示它构建g++
我在最近使用的几个软件包上注意到了这一点Rcpp,但如果你想在github上测试我的googlePolylines软件包的例子.
devtools::session_info()
Session info ----------------------------------------------------------------------------------------------
setting value
version R version 3.4.3 (2017-11-30)
system x86_64, darwin15.6.0 ## Mac OS
ui RStudio (1.1.414)
language (EN)
collate en_AU.UTF-8
tz Australia/Melbourne
date 2018-03-11
Run Code Online (Sandbox Code Playgroud)
在https://stat.ethz.ch/pipermail/r-package-devel/2017q4/002087.html 中引用邓肯默多克:
根据编写 R 扩展中的第 1.2.1 节“使用 Makevars”,R_HOME/etcR_ARCH/Makeconf 包含在 Makevars 之后,因此您看到的是设计使然。我相信这是为了使用与构建 R 的工具兼容的工具构建包。(请记住,包是为分发到不同系统而设计的。)
因此src/Makevars,例如PKG_CXXFLAGS,您可以更改via内的各种标志,但您不能覆盖CXXFLAGS或CXX本身。而且没有PKG_CXX。