代码之家  ›  专栏  ›  技术社区  ›  SymbolixAU Adam Erickson

包生成忽略Makevars标志

  •  9
  • SymbolixAU Adam Erickson  · 技术社区  · 8 年前

    问题

    我想告诉我的包裹使用 gcc 要编译 C++ 代码代替 clang 。为什么我的 CXX my中的标志 Makevars 正在使用的文件?

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


    这是我的理解(参见 参考文献 )我可以指定 CXX* 其中一个中的标志

    1. src/Makevars 包装中,或
    2. ~/.R/Makevars

    然而,我无法让选项1发挥作用,只能让选项2发挥作用。

    示例生成

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

    选项1: src/Makevars

    我在此指定 CXX11 = /usr/local/bin/g++-7 在…内 src/Makevars 。构建消息显示它正在使用 叮当声

    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 回复  |  直到 8 年前
        1
  •  8
  •   Ralf Stubner    8 年前

    引用邓肯·默多克的话 https://stat.ethz.ch/pipermail/r-package-devel/2017q4/002087.html :

    根据第1.2.1节“使用Makevars”编写R扩展, R\u HOME/etcR\u ARCH/Makeconf包含在Makevars之后,所以 看是故意的。我相信这就是软件包 与构建R.(记住,包是 设计用于分发到各种系统。)

    因此,您可以在中更改各种标志 src/Makevars 例如via PKG_CXXFLAGS ,但不能覆盖 CXXFLAGS CXX 它本身而且没有 PKG_CXX