Question
我试图告诉我的包使用gcc
来编译C++
代码代替clang
。为什么不是我的CXX
我的旗帜Makevars
文件正在使用?
(我期待/希望解决方案非常简单,但我却忽略了。)
这是我的理解(参见参考)我可以指定CXX*
任一标志
-
src/Makevars
在包装中,或
-
~/.R/Makevars
但是,我无法使用选项 1,只能使用选项 2。
示例构建
以下是显示我正在使用的构建选项的屏幕截图。在每种情况下我都会展示Makevars
和/.R/Makevars
文件来显示我在每种情况下使用的文件。
选项1:src/Makevars
这里我指定CXX11 = /usr/local/bin/g++-7
inside src/Makevars
。构建消息说它正在构建clang
选项 2:~/.R/Makevars
这里我指定CXX11 = /usr/local/bin/g++-7
inside ~/.R/Makevars
。构建消息显示它是用g++
示例包
我在最近使用的一些软件包上注意到了这一点Rcpp
,但是如果你想要一个例子来测试我的googlePolylines
包是在 github 上 https://github.com/SymbolixAU/googlePolylines.
参考
- 使用备用 GCC 构建 R 包 https://stackoverflow.com/a/1618618/5977215
- 了解 Makevars 的内容 https://stackoverflow.com/a/43599233/5977215
会议信息
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 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
,但你不能覆盖CXXFLAGS
or CXX
本身。并且没有PKG_CXX
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)