システム仕様:
- OS - Mac OS X 10.6.8 (Snow Leopard)
- g++ - Macports gcc 4.8.1_2+ユニバーサル
- R -2.15.3
- Rcpp - 0.10.3
R で (Rcpp を介して) C++11 を使用する関数をコンパイルしようとすると、エラーが発生し続けます - 何らかの理由で、g++ が-std=c++11
オプションを認識しません。
この例は、Rcpp ヘルプ ファイルから取得したものです (C++11 に固有のものは含まれていませんが、私の問題を示すことができます)。私が実行しようとすると:
require( Rcpp )
Sys.setenv( "PKG_CXXFLAGS"="-std=c++11" )
cppFunction(plugins=c("cpp11"), '
int useCpp11() {
int x = 10;
return x;
}')
私は得る:
cc1plus: error: unrecognized command line option "-std=c++11"
make: *** [file61239328ae6.o] Error 1
g++ -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include/x86_64 -DNDEBUG -I/usr/local/include -I"/Library/Frameworks/R.framework/Versions/2.15/Resources/library/Rcpp/include" -std=c++11 -fPIC -g -O2 -c file61239328ae6.cpp -o file61239328ae6.o
Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, :
Error 1 occurred building shared library.
同時に、この関数を bash から直接コンパイルできます。このコードがuseCpp11.cpp
ファイル内にある場合、これは問題なく実行されます。
g++ useCpp11.cpp -std=c++11
確かに、私は何か間違ったことをしていますが、それが何であるかを理解することはできません. gcc 4.8 は bash のデフォルト コンパイラとして設定されており、Rcpp はこれまで問題なく動作していました。どのバージョンの g++ を使用するかを R に伝えていないのではないかと思います。