Подборка RInside: Ставьте цели

Я новичок в использовании make и пытаюсь запустить пример RInside для демонстрации плотности Qt, приведенный здесь: http://dirk.eddelbuettel.com/blog/2011/03/25/. Я сохранил код в следующие файлы:

main.cpp Makefile qtdensity.cpp include/qtdensity.h

Я использую Ubuntu 13.10, у меня установлены R, Rcpp и Inside. Когда я подхожу к терминалу и запускаю

> make -f Makefile

я получаю ошибку

make: *** No targets. Stop.

Пожалуйста, дайте мне знать, как действовать дальше.

Спасибо


Я не вижу, как задать продолжение первого ответа, поэтому я должен расширить свой вопрос:

Я только что создал файлы и смог запустить qmake на main.cpp, qtdensity.cpp, qtdensity.h и qtdensity.pro, что сработало, но когда я попытался запустить make, я получаю следующие ошибки:

Много ошибок, связанных с R...

qtdensity.cpp:(.text+0x53a): undefined reference to `Rf_mkString'
qtdensity.cpp:(.text+0x54e): undefined reference to `Rf_install'
qtdensity.cpp:(.text+0x559): undefined reference to `Rf_findVarInFrame'
qtdensity.cpp:(.text+0x560): undefined reference to `R_UnboundValue'
...

qtdensity.cpp:(.text.startup+0x2a5): undefined reference to `R_NaReal'
qtdensity.cpp:(.text.startup+0x2b2): undefined reference to `R_NaN'
main.o: In function `_GLOBAL__sub_I_main':
main.cpp:(.text.startup+0x2a5): undefined reference to `R_NaReal'
main.cpp:(.text.startup+0x2b2): undefined reference to `R_NaN'
main.o: In function `main':
main.cpp:(.text.startup+0x352): undefined reference to `RInside::RInside(int, char const* const*, bool, bool, bool)'
main.cpp:(.text.startup+0x397): undefined reference to `RInside::~RInside()'
main.cpp:(.text.startup+0x3b3): undefined reference to `RInside::~RInside()'
moc_qtdensity.o: In function `_GLOBAL__sub_I__ZN9QtDensity18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv':
moc_qtdensity.cpp:(.text.startup+0x2a5): undefined reference to `R_NaReal'
moc_qtdensity.cpp:(.text.startup+0x2b2): undefined reference to `R_NaN'
collect2: error: ld returned 1 exit status
make: *** [qdensity] Error 1

person CuriousGeorge    schedule 14.02.2014    source источник
comment
Он не был связан с R или RInside. Возможно, ваша система нестандартна. Как я показал вам - работает здесь.   -  person Dirk Eddelbuettel    schedule 15.02.2014


Ответы (1)


Пример Qt отличается тем, что он использует Qt. Вам всегда нужно начинать с создания самого Makefile из файла .pro. Свидетель:

edd@max:~/git/rinside/inst/examples/qt$ ls -l        ## no Makefile
total 28
drwxrwxr-x 2 edd edd 4096 Dec 27 18:38 cmake
-rw-rw-r-- 1 edd edd  518 Dec 27 18:38 main.cpp
-rw-rw-r-- 1 edd edd 5953 Dec 27 18:38 qtdensity.cpp
-rw-rw-r-- 1 edd edd 1532 Dec 27 18:38 qtdensity.h
-rw-rw-r-- 1 edd edd 2378 Feb 11 20:14 qtdensity.pro
-rw-rw-r-- 1 edd edd  887 Dec 27 18:38 README
edd@max:~/git/rinside/inst/examples/qt$ qmake        ## creates Makefile
edd@max:~/git/rinside/inst/examples/qt$ make
g++ -c -m64 -pipe -I/usr/share/R/include [... lots and lots omitted ...]
g++ -m64 -Wl,-O1 -o qtdensity qtdensity.o main.o moc_qtdensity.o  [....]
edd@max:~/git/rinside/inst/examples/qt$ ls -l qtdensity
-rwxrwxr-x 1 edd edd 76666 Feb 14 15:02 qtdensity
edd@max:~/git/rinside/inst/examples/qt$ 

Этот конечно также описан в README в этом каталоге...

person Dirk Eddelbuettel    schedule 14.02.2014