【发布时间】:2018-08-19 10:17:37
【问题描述】:
问题
我试图告诉我的包使用gcc 来编译C++ 代码而不是clang。为什么我的Makevars 文件中的CXX 标志没有被使用?
(我期待/希望解决方案非常简单,但我忽略了。)
我的理解是(参见references)我可以在其中指定CXX* 标志
-
src/Makevars在包中,或 -
~/.R/Makevars
但是,我无法让选项 1 起作用,只有选项 2。
示例构建
这里是显示我正在使用的构建选项的屏幕截图。在每种情况下,我都会显示Makevars 和/.R/Makevars 文件,以显示我在每种情况下使用的文件。
选项 1:src/Makevars
这里我在src/Makevars 中指定CXX11 = /usr/local/bin/g++-7。构建消息说它正在构建 clang
选项 2:~/.R/Makevars
这里我在~/.R/Makevars 中指定CXX11 = /usr/local/bin/g++-7。构建消息显示它使用 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
【问题讨论】:
-
您的包不能覆盖用于编译包的 C++ 编译器(/版本)。否则 R 将无法加载它。因此 R 禁止这样做。出于同样的原因,您的 R 包分发(在 GitHub 上)不应包含
src/*.o文件。 -
对!我没有正确设置
.gitignore并且那些.os 被错误地提交了。我现在清理了 github repo