问题

我试图告诉我的包使用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进行构建

    c++ - 软件包构建忽略Makevars标志-LMLPHP

    选项2:〜/.R/Makevars

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

    c++ - 软件包构建忽略Makevars标志-LMLPHP

    示例包

    我在最近使用Rcpp构建的一些软件包中注意到了这一点,但是如果您想通过一个示例来测试我的googlePolylines软件包,则为here on github

    引用
  • Building R packages using Alternate GCC
  • Understanding the contents of Makevars

  • session 信息
    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
    

    最佳答案

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



    因此,您可以通过src/Makevars等在PKG_CXXFLAGS中更改各种标志,但是您不能覆盖CXXFLAGSCXX本身。而且没有PKG_CXX

    09-28 12:14