2009-09-03 5 views
0

私はRパッケージをビルドしており、ビルドプロセスの一部としてOSX用のjniライブラリ(myPackage.jnilib)をビルドし、次にRの自動インストールメカニズムを内部に配置する必要があります私のパッケージのlibsディレクトリ。jnilib拡張子を持つRパッケージライブラリのビルドとインストール

Rのデフォルトは、myPackage.soというオブジェクトを作成してみることです。私はこれをカスタマイズすることができるようにしたいが、どのように見ることができません。

私は、Makevarsの偽の "all"ターゲット(hereと記されている)を使ってRの仕組みを覆して、私のパッケージのinstディレクトリにファイルをコピーすることで、その一部を得ることができます。これは私自身のローカルでの使用では問題ありませんが、普遍的なバイナリを作成しようとすると頭痛が発生します。私は現在、CRAN用のパッケージを用意していますので、この方法はうまくいかないでしょう。

私は2つの潜在的な解決策を見ることができますが、まだ

  1. を動作するようにいずれかを持っていないが、インストール時に私のパッケージのlibsディレクトリに手動で私のライブラリをコピーします。このディレクトリはオンザフライで作成されているので、Makevarsやconfigureスクリプト内でどのようなものが見つかったのでしょうか?

  2. ベストソリューション:Rの通常のパッケージを使用できるようにR CMD SHLIBに出力ファイル名を教えてくださいメカニズムを使用して、ファイルを正しいディレクトリにコピーさせます。

+0

ようになります。しかし、おそらく、このブログは助けるかもしれない? http://bit.ly/ODVaL –

+0

ありがとうございます。そのブログとhelloWorldJavaパッケージが本当に役に立ちました。 –

答えて

0

他の誰かがこの問題に遭遇した場合は、私自身の回避策をここに掲載しています。

私は自分のMakevarsでターゲットを定義し、ライブラリを直接コピーします(つまり答えは1)。変数R_LIBRARY_DIRは、パッケージがビルドされる一時的な場所を提供します。

私Makevarsは今、私はこの問題について全く何も知らないこの

OBJECTS = 

LIBSINSTDIR=$(R_LIBRARY_DIR)/myPackage/libs/ 

#ARCHFLAG is set in the configure script to i386 or ppc as appropriate 
JNIINSTDIR=$(LIBSINSTDIR)/@[email protected]/ 

.PHONY: all 

all: $(SHLIB) jnilib 

jnilib: object1.o object2.o 
    $(CXX) -bundle $(JAVA_LIBS) $(JAVA_CPPFLAGS) -o libmyPackage.jnilib object1.o object2.o 
    mkdir -p $(JNIINSTDIR) 
    cp libmyPackage.jnilib $(JNIINSTDIR) 
関連する問題