R-Paket, das mit einer externen C-Bibliothek verknüpft ist

Ich habe einige C-Code, der die verwendetigraph Bibliothek. Ich möchte einen R-Wrapper darum legen und ihn als R-Paket an CRAN senden.

igraph hat bereits einen R-Port auf CRAN, daher wäre es sinnvoll, wenn mein R-Paket 'foo' von Rs igraph abhängt. Wie kann ich meine C-Funktionen mit der ursprünglichen Igraph-Bibliothek verknüpfen, da foo einen eigenen C-Code verwendet, der vom C-Igraph abhängt? Ich habe gelesen, dass dies in einer Datei namens Makevars gemacht wird, aber das Verknüpfen mit einer externen Bibliothek ist sehr haarig.

Wenn dies nicht möglich ist, ist es besser, den gesamten igraph-Quellcode zu kopieren und das Ganze in mein / src-Verzeichnis zu legen? Das R igraph-Paket enthält bereits eine Datei namens Makevars, aber ich verstehe nicht, wie alle c-Dateien erstellt werden - normalerweise habe ich in meinem Makefile so etwas wie gcc (eine Liste von .c-Quelldateien) -o, aber Makevar enthält nur

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)

und es gibt kein anderes Makefile. Wie fasse ich C-Code in ein R-Paket ein, das von einer anderen C-Bibliothek abhängt, und wie schreibe ich die entsprechenden Makevars (oder Makefile), um die C-Funktionen zu integrieren?

Eine ältere Frage wurde gestelltHier scheint aber nur zu verlinken, um beim Schreiben eines eigenen C-Codes zu helfen, der von nichts abhängt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage