问题
我试图告诉我的包使用gcc
来编译C++
代码,而不是clang
。为什么在我的CXX
文件中没有使用我的Makevars
标志?
(我期待/希望这个解决方案非常简单,我已经忽略了。)
根据我的理解(请参阅references),我可以在以下任何一个中指定CXX*
标志
src/Makevars
,或~/.R/Makevars
但是,我不能让选项1工作,只有选项2。
示例构建
下面是屏幕截图,显示我正在使用的构建选项。在每种情况下,我都会同时显示Makevars
和/.R/Makevars
文件,以显示我在每种情况下使用的是哪个文件。
src/Makevars
选项1:
在这里,我在src/Makevars
中指定了src/Makevars
。构建消息说它是用clang
构建的
选项2:~/.R/Makevars
在这里,我在~/.R/Makevars
中指定了~/.R/Makevars
。生成消息显示它使用g++
构建
示例包
我在最近使用Rcpp
构建的几个包上注意到了这一点,但是如果您想要测试我的googlePolylines
包的例子是在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
发布于 2018-03-12 16:00:44
引用邓肯·默多克在https://stat.ethz.ch/pipermail/r-package-devel/2017q4/002087.html中的话
根据编写R扩展中的1.2.1节“使用Makevars”,在Makevars之后包含了R_HOME/etcR_ARCH/Makeconf,所以您看到的是设计。我相信这是为了使软件包能够与构建R的工具兼容(记住,包是为分发给不同的系统而设计的)。
因此,您可以通过例如src/Makevars
更改PKG_CXXFLAGS
中的各种标志,但不能覆盖CXXFLAGS
或CXX
本身。也没有PKG_CXX
。
https://stackoverflow.com/questions/49217539
复制相似问题