包构建忽略Makevars标志

时间:2018-03-11 07:04:19

标签: c++ r r-package

问题

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

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

我的理解(参见参考)我可以指定CXX*个标记

    包中的
  1. src/Makevars
  2. ~/.R/Makevars
  3. 但是,我无法让选项1工作,只有选项2.

    示例构建

    以下是显示我正在使用的构建选项的屏幕截图。在每种情况下,我都会显示Makevars/.R/Makevars文件,以显示我在每种情况下使用的文件。

    选项1:src/Makevars

    我在CXX11 = /usr/local/bin/g++-7内指定src/Makevars。构建消息表示它使用clang

    构建

    enter image description here

    选项2:〜/ .R / Makevars

    我在CXX11 = /usr/local/bin/g++-7内指定~/.R/Makevars。构建消息显示它使用g++

    构建

    enter image description here

    示例包

    我已经在最近使用Rcpp构建的一些软件包上注意到这一点,但如果您想要一个示例来测试我的googlePolylines软件包是here on github

    参考

    会话信息

    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 
    

1 个答案:

答案 0 :(得分:4)

https://stat.ethz.ch/pipermail/r-package-devel/2017q4/002087.html中引用Duncan Murdoch:

  

根据第1.2.1节"使用Makevars"在写R扩展中,   在Makevars之后包含R_HOME / etcR_ARCH / Makeconf,所以你要做什么   看是设计的。我相信这是用包构建的   与那些构建R的工具兼容的工具(请记住,包是   旨在分发给各种系统。)

因此,您可以更改src/Makevars中的各种标记,例如PKG_CXXFLAGS,但不能覆盖CXXFLAGSCXX本身。并且没有PKG_CXX