2011-02-10 15 views
3

私は静的ライブラリを生成するautotoolsを使って、Cで書かれたプロジェクトで作業します。また、同じプロジェクトのコンテキストでC APIにPythonインターフェイスを提供しています。静的ライブラリと動的ライブラリの両方をポータブルな方法で提供できるようにするため、最近までプロジェクトのlibtoolを導入するまでの間、私は許可を得ていませんでした。これまでは、distutilsを使ってPython共有モジュールを作成し、PythonモジュールをプロジェクトのC静的ライブラリにリンクしました。再度、私はlibtool/sharedライブラリをecuationに導入することは許されなかったからです。今私は、私は、次の2つの問題のシナリオ直面しています中にlibtoolを配置すること:私はdistutilsのとautotoolsのは、お互いに話をしないので、Distutilsのを使ってPythonの共有モジュールを生産し続けるとlibtool pythonモジュールのリンクとインストール

  1. を、I distutilsにリンクするCライブラリを伝える必要があります。これまでのところ、libtoolが作成したライブラリの名前とパスを取得するために.laファイルを解析する方法は考えられません。 libtoolは、システム上でどのようなタイプのライブラリを作成できたかに関する情報を提供していますか?

  2. 私がPythonモジュールの生産をautomakeに移しても、インストールプロセスに達するまでは問題ありません。私はlibtoolにどのように伝えたいのか分かりません。私はPythonモジュールをlibフォルダ、つまりlib/python2.5/site-packages/myprojectのどこかに置きたいと思っています。私は にしようとしましたが、ライブラリが間違ったrpath(ビルドのものとインストールのものではない)を持っていたので、正しく動作しませんでした。なぜ私はそれを望んでいますか?そこには私も.pyラッパーがあるから。ですから、libtoolに私のモジュールをどこか別の場所にインストールし、rpathを適切に設定するように指示する方法はありますか?

私はちょうどエレガントな解決策を探しています推測する、または多分解決策があり、それは簡単ですが、私は十分に経験していないよと、私はそれを見ることはできません。どんな助け?

P.S.オプション2を好むでしょう、私はそれを動作させることができますので、私はautotoolsからdistutilsに情報を渡す必要はありません。

答えて

3

http://www.gnu.org/software/hello/manual/automake/Python.htmlをお聞きしましたか?モジュールをインストールする場所としてpyexecdirを使用するかどうかはわかりません。その場合は、AM_PATH_PYTHONconfigure.acに追加してください。

何かをインストールする場所を_PRIMARYが指定する名前の前にとにかく、automakeの中で、:lib_LTLIBRARIES$(libdir)でライブラリをインストールします、pyexec_LTLIBRARIES$(pyexecdir)にインストールされます、bin_PROGRAMSはそうで$(bindir)にインストールしてます。

+0

ああ、素敵!それが私の必要なものです。私はconfigure.acにAM_PATH_PYTHONを持っていましたが、pyexecdirやpkgpyexecdirを認識していませんでした。 pkgpyexec_LTLIBRARIESを使用すると、Pythonモジュールが適切なrpathを持つ 'lib/python2.5/site-packages/myproject'に送られます。ありがとうございました ! – Cricri

+0

また、installdir_PRIMARYアラームのおかげです。それは実際に仕事をしていることであり、それについて完全に忘れていました。 – Cricri

関連する問題