我试图告诉我的软件包使用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
构建的一些软件包上注意到这一点,但如果您想要一个示例来测试我的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
答案 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
,但不能覆盖CXXFLAGS
或CXX
本身。并且没有PKG_CXX
。