包构建忽略Makevars标志

Sym*_*xAU 6 c++ r r-package

我试图告诉我的包gcc用来编译C++代码而不是代码clang.为什么CXX我的Makevars文件中没有使用我的标志?

(我期待/希望解决方案是非常简单的,我忽略了.)


我的理解(参见参考资料)我可以CXX*在其中指定标志

  1. src/Makevars 在包中,或
  2. ~/.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)

Ral*_*ner 8

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内的各种标志,但您不能覆盖CXXFLAGSCXX本身。而且没有PKG_CXX