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.