igraphライブラリを利用する C コードがいくつかあります。R ラッパーを配置して、R パッケージとして CRAN に送信したいと考えています。
igraphには既に CRAN の R ポートがあるため、R パッケージ 'foo' が R の igraph に依存することは理にかなっています。foo は C igraph に依存する独自の C コードを使用するため、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 コードを配置するにはどうすればよいでしょうか。また、対応する Makevar (または Makefile) を記述して C 関数を組み込むにはどうすればよいでしょうか。
古い質問がここに投稿されましたが、何にも依存しない独自の C コードを作成するのに役立つようにリンクされているようです。