У меня есть код c, который использует библиотеку igraph. Я хотел бы поместить вокруг него обертку R и отправить ее в CRAN как R-пакет.
igraph уже имеет R-порт на CRAN, поэтому для моего R-пакета 'foo' было бы целесообразно зависеть от R igraph. Поскольку foo использует собственный C-код, который зависит от C igraph, как я могу связать свои C-функции с оригинальной библиотекой igraph? Я читал, что это делается в файле под названием Makevars, но привязка к внешней библиотеке очень волосатая.
Если это невозможно, лучше всего скопировать весь исходный код igraph и поместить все это в каталог /src? В пакете R igraph уже есть файл под названием Makevars, но я не понимаю, как все c файлы создаются - обычно в моем Makefile. У меня есть что-то вроде gcc (некоторый список .c исходных файлов) -o, но Makevar содержит только
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)
и нет другого Makefile. В целом, как я могу поместить C-код в R-пакет, который зависит от другой библиотеки C, и как я могу написать соответствующие Makevars (или Makefile) для включения функций C?
Старый вопрос был отправлен here, но, похоже, он ссылается на помощь в написании собственного кода на C, который ничем не зависит.