Pakiet R, który łączy się z zewnętrzną biblioteką C.

Mam jakiś kod c, który wykorzystujeigraph biblioteka. Chciałbym umieścić wokół niego wrapper R i wysłać go do CRAN jako pakiet R.

igraph ma już port R na CRAN, więc sensowne byłoby, aby mój pakiet R 'foo' zależał od igraph R. Ponieważ foo używa własnego kodu C, który zależy od C igraph, jak mogę połączyć moje funkcje C z oryginalną biblioteką igraph? Czytałem, że jest to zrobione w pliku o nazwie Makevars, ale połączenie z zewnętrzną biblioteką jest bardzo włochate.

Jeśli nie jest to możliwe, czy lepiej jest skopiować cały kod źródłowy igraph i umieścić całą zawartość w katalogu mój / src? Pakiet R igraph ma już plik o nazwie Makevars, ale nie rozumiem, jak budowane są wszystkie pliki c - zwykle w moim Makefile mam coś takiego jak gcc (niektóre listy plików źródłowych .c) -o, ale Makevar zawiera tylko

PKG_CFLAGS=-DUSING_R -I. -Ics -Iglpk -Iglpk/amd -Iglpk/colamd \
-g -O2 -I/usr/include/libxml2 -g -O2 -I/usr/include/libxml2 -DNDEBUG \
-DPACKAGE_VERSION=\"0.6\" -DINTERNAL_ARPACK \
-DIGRAPH_THREAD_LOCAL=/**/
PKG_CXXFLAGS= -DUSING_R -DIGRAPH_THREAD_LOCAL=/**/ -DNDEBUG
PKG_LIBS=-lxml2 -lz -lpthread -licucore -lm -lgmp  $(FLIBS) $(LAPACK_LIBS) $(BLAS_LIBS)

all: $(SHLIB)

i nie ma innego pliku Makefile. Podsumowując, jak przejść do umieszczania kodu C w pakiecie R, który zależy od innej biblioteki C i jak mogę napisać odpowiednie Makevars (lub Makefile), aby włączyć funkcje C?

Wysłano starsze pytanietutaj ale wydaje się, że łączy się z pomocą przy pisaniu własnego kodu C, który nie zależy od niczego.

questionAnswers(2)

yourAnswerToTheQuestion