Dmi*_*nov 11 macos r rcpp clang++
我对Rcpp有一些奇怪的麻烦 - 它使用了不可预测的C++编译器.这个问题有点类似于这个问题.
我在OSX上,我有2个编译器 - 默认clang和openmp clang-omp支持.我也有以下~/.R/Makevars文件(我设置clang-omp为默认编译器):  
CC = clang-omp
CXX = clang-omp ++
CFLAGS + = -O3 -Wall -pipe -pedantic -std = gnu99
CXXFLAGS + = -O3 -Wall -pipe -Wno-unused -pedantic -fopenmp
问题是,我正在开发的软件包编译而clang++不是clang-omp++.我也尝试过(作为实验来解决问题)更改包src/Makevars和设置CXX=clang-omp++以及修改后的$R_HOME/etc/Makeconf CXX条目CXX = clang-omp++.没有运气 - 它仍然可以编译clang++.不知道为什么会这样.  
这里也是小的可重现的(来自控制台R和来自Rstudio)的例子(不知道它是否与上面的问题有关).假设2个非常相似的cpp函数:
1.  
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector timesTwo(NumericVector x) {
  return x * 2;
}  
sourceCpp来自R的电话:
library(Rcpp)  
sourceCpp("src/Rcpp_compiler.cpp", verbose = T)
/Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB -o'ourceCpp_1.so''Rcpp_compiler.cpp'clang
-omp ++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Users/dmitryselivanov/Library/R/3.2/library/Rcpp/include"-I"/ Users/dmitryselivanov /项目/实验/ SRC" -fPIC -Wall -mtune = core2的-g -O2 -O3 -Wall -pipe -Wno非占线-pedantic -fopenmp -c Rcpp_compiler.cpp -o Rcpp_compiler.o
铛-OMP ++ -dynamiclib -Wl ,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L / usr/local/lib -o sourceCpp_1.so Rcpp_compiler.o -F/Library/Frameworks/R. framework/.. -framework R -Wl,-frame,-Wl,CoreFoundation
按预期工作 - 使用clang-omp ++和我的所有标志 ~/.R/Makevars
2.
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::export]]
NumericVector timesTwo(NumericVector x) {
  return x * 2;
}  
库/框架/ R.framework/Resources/bin/R CMD SHLIB -o'ourceCpp_2.so''Rcpp_compiler.cpp'clang
++ -std = c ++ 11 -I/Library/Frameworks/R.framework/Resources/include - DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Users/dmitryselivanov/Library/R/3.2/library/Rcpp/include"-I"/Users/dmitryselivanov/projects/experiments/src"-fPIC -Wall -mtune = core2 -g -O2 -c Rcpp_compiler.cpp -o Rcpp_compiler.o
clang ++ -std = c ++ 11 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L / usr/local/lib -o sourceCpp_2.so Rcpp_compiler.o -F/Library/Frameworks/R.framework/.. - 框架R -Wl,-framework -Wl,CoreFoundation
我只添加了// [[Rcpp::plugins(cpp11)]]它clang++而不是编译clang-omp++
这是我的sessionInfo():
R版本3.2.1(2015-06-18)平台:x86_64-apple-darwin13.4.0(64位)
运行于:OS X 10.10.5(Yosemite)
语言环境: 1 en_US.UTF-8/en_US.UTF- 8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8附加基础包:
1 stats graphics grDevices utils数据集方法基于
其他附加包: 1
通过命名空间加载Rcpp_0.12.1 (并未附加) : 1个工具 _3.2.1
Dmi*_*nov 11
谢谢,@ Dirk提示,我最终得到了答案.希望,这会为某人节省一点时间.以下两行~/.R/Makevars解决了我的问题:  
CXX1X=clang-omp++
查看详情在此写作R附加部分.
| 归档时间: | 
 | 
| 查看次数: | 4349 次 | 
| 最近记录: |