Сборка игрушечного пакета со ссылкой на Rcpp

Я пытался создать фиктивный пакет по книге Бесшовная интеграция R и C++ с Rcpp По сути, это однострочный код: Rcpp.package.skeleton("mypackage")

J:\R\tests>ls -rla mypackage
total 2
drwx------+ 1  mkpasswd   0 Jul 24 12:24 src
drwx------+ 1  mkpasswd   0 Jul 24 12:24 man
drwx------+ 1  mkpasswd   0 Jul 24 12:24 R
-rwx------  1  mkpasswd  54 Jul 24 12:24 NAMESPACE
-rwx------  1  mkpasswd 336 Jul 24 12:24 DESCRIPTION
drwx------+ 1  mkpasswd   0 Jul 24 12:24 ..
drwx------+ 1  mkpasswd   0 Jul 24 12:24 .

Все работает правильно, и я попытался установить только что созданный пакет.

J:\R\tests>"C:\Program Files\R\R-3.0.1\bin\x64\R.exe" CMD INSTALL mypackage

это с треском проваливается

J:\R\tests>"C:\Program Files\R\R-3.0.1\bin\x64\R.exe" CMD INSTALL mypackage

package::utils loaded
LC_TIME have been set to C
Sourcing utility file : J:/R//utils/utils.R
Adding instantClient path: C:\instantclient\x64\instantclient_11_2 to PATH
Adding MOSEK: C:\Travail\Tools\mosek\7\tools\platform\win64x86\bin to PATH
J:/R//utils/descriptifTables.csv successfully loaded in a global data.frame descriptifTables

##------ [J:/R/tests] Wed Jul 24 12:26:42 2013 ------##
* installing to library 'J:/R/win-library/3.0'
* installing *source* package 'mypackage' ...
** libs

*** arch - i386
g++ -m32 -I"C:/PROGRA~1/R/R-30~1.1/include" -DNDEBUG    -I"J:/R/win-library/3.0/Rcpp/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -mtune=core2 -c rcpp_hello_world.cpp -o rcpp_hello_world.o
Syntax error: end of file unexpected (expecting "fi")
make: *** [mypackage.dll] Error 2
ERROR: compilation failed for package 'mypackage'
* removing 'J:/R/win-library/3.0/mypackage'

Я пытался сделать то же самое с Rstudio, результат тот же. Я собирал несколько других пакетов из исходников (файлы .tar.gz) без особых проблем.


person statquant    schedule 24.07.2013    source источник


Ответы (1)


Странные ошибки. Не могу думать ни о чем другом, кроме как не устанавливать R по пути с пробелами - рекомендация самого «Часто задаваемых вопросов по R в Windows».

Но это явно проблема вашей локальной установки, так что проработайте разделы Windows в главе 2 книги. То, что вы должны вызывать R как странное "C:\Program Files\R\R-3.0.1\bin\x64\R.exe", убедительно свидетельствует о том, что вы не установили R и Rtools, как предполагалось.

person Dirk Eddelbuettel    schedule 24.07.2013
comment
Скажите моему работодателю... каждый раз, когда я делаю что-то дома на Ubuntu или Mint, это работает из коробки, а на Windows 7 это занимает неограниченное количество времени. - person statquant; 24.07.2013
comment
Я редко когда-либо работаю в Windows (даже в офисе), но когда я это делаю, я знаю, как установить PATH. Не так уж и сложно, правда... - person Dirk Eddelbuettel; 24.07.2013
comment
Sys.setenv(PATH="whatever") в моем Renviron.site файле. Я знаю, но, может быть, это не так просто... - person statquant; 24.07.2013
comment
Это просто неправильно, и вы получили то, что заслуживаете. Вы должны установить PATH перед запуском оболочки, в которой вы работаете, т. е. установить PATH для всей системы, а затем запустить новую новую cmd.exe. - person Dirk Eddelbuettel; 24.07.2013
comment
Я понятия не имею, что ты только что пытался сказать. Существует множество руководств о том, как настроить среду компиляции R на недружественной к разработке платформе Windows. Почему бы вам не прочитать одну из них? - person Dirk Eddelbuettel; 24.07.2013
comment
Я пытался сказать, что установка PATH перед запуском оболочки не является обязательной (stat.ethz.ch/R-manual/R-devel/library/base/html/Startup.html), хотя это помогло найти виновника. Спасибо за вашу помощь - person statquant; 24.07.2013
comment
Вы все еще ошибаетесь и вы ищете не в том месте. Позвольте мне процитировать: Это приложение содержит много предписывающих комментариев. Они здесь в результате горького опыта. Пожалуйста, не сообщайте о проблемах в списки рассылки R, если вы не выполнили все предписания. - person Dirk Eddelbuettel; 24.07.2013
comment
давайте продолжим это обсуждение в чате - person statquant; 24.07.2013
comment
Нет, спасибо. Нет, если вы не измените свой никнейм / не бросите это «Я должен быть анон». ерунда по профессиональным соображениям. - person Dirk Eddelbuettel; 24.07.2013