包构建忽略 Makevars 标志
Package build ignores Makevars flags
问题
我试图告诉我的程序包使用 gcc
来编译 C++
代码而不是 clang
。为什么我的 Makevars
文件中的 CXX
标志没有被使用?
(我 expecting/hoping 解决方案非常简单,但我忽略了。)
据我了解(参见 参考资料),我可以在任一
中指定 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。
参考资料
- Building R packages using Alternate GCC
Session 信息
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中引用邓肯·默多克的话:
According to section 1.2.1 "Using Makevars" in Writing R Extensions,
R_HOME/etcR_ARCH/Makeconf is included after Makevars, so what you're
seeing is by design. I believe this is so that packages are built with
tools compatible with those that built R. (Remember, packages are
designed for distribution to diverse systems.)
因此您可以通过例如 PKG_CXXFLAGS
更改 src/Makevars
中的各种标志,但您不能覆盖 CXXFLAGS
或 CXX
本身。而且没有PKG_CXX
。
问题
我试图告诉我的程序包使用 gcc
来编译 C++
代码而不是 clang
。为什么我的 Makevars
文件中的 CXX
标志没有被使用?
(我 expecting/hoping 解决方案非常简单,但我忽略了。)
据我了解(参见 参考资料),我可以在任一
中指定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。
参考资料
- Building R packages using Alternate GCC
Session 信息
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中引用邓肯·默多克的话:
According to section 1.2.1 "Using Makevars" in Writing R Extensions, R_HOME/etcR_ARCH/Makeconf is included after Makevars, so what you're seeing is by design. I believe this is so that packages are built with tools compatible with those that built R. (Remember, packages are designed for distribution to diverse systems.)
因此您可以通过例如 PKG_CXXFLAGS
更改 src/Makevars
中的各种标志,但您不能覆盖 CXXFLAGS
或 CXX
本身。而且没有PKG_CXX
。