2016-05-21 18 views
1

私はsconscript(例えばmake uninstall)で書くのに面倒な多くの機能を自動的に生成するようだから、プロジェクトをsconsからautotoolsに移行する作業をしています。setup.pyよりもMakefile.amを使用する上で不利な点はありますか?

プロジェクトは主にC++ベースですが、Pythonで書かれたモジュールも含まれています。多くの読書用オートツールの後、私は最終的に共有ライブラリを作成し、実行ファイルをコンパイルしてリンクし、C++ヘッダファイルをインストールすることができます。美しい。今、彼らはPythonの部分になります。 configure.acでAM_PYTHON_PATHを含むことで、私はまた、このような

autopy_PYTHON=autopy/__init__.py autopy/noindent.py autopy/auto.py submoda_PYTHON=autopy/submoda/moda.py autopy/submoda/modb.py autopy/submoda/modc.py autopy/submoda/__init__.py submodb_PYTHON=autopy/submodb/moda.py autopy/submodb/modb.py autopy/submodb/modc.py autopy/submodb/__init__.py

autopydir=$(pythondir)/autopy submodadir=$(pythondir)/submoda submodbdir=$(pythondir)/submodb

dist_bin_SCRIPTS=scripts/script1 scripts/script2 scripts/script3

としてMakefile.amファイルでのpythonモジュールをインストールしていますこれは私のすべてのモジュールを配置するようで、 Pythonモジュールをインストールする方法は、distutils経由のsetup.pyスクリプトを使用しているように思えるので、これが正しいかどうか疑問に思います。私はpythonモジュールの中にsetup.pyスクリプトを持っていますが、scotはautotoolsを使用するまでそれらを呼び出していました。 1つの方法が他の方法よりも優先されますか? autotoolsでビルドするときに私はまだsetup.pyを使用するべきですか?私は、人々が通常、autotoolsを使ってC++ のpythonモジュールでビルドを解決する方法を理解したいと思います。他にも多くのautotoolsに関する質問がありますが、後でそれらを保存します。

+0

Autotoolsはひどいです。私は始めることすらできません...ここに例があります:http://voices.canonical.com/jussi.pakkanen/2011/09/13/autotools/ – Zulan

+0

ハ。はい、私はすでにそれを読んでいます。先週、私はたくさんの意見を読んだ。これまで私はautotoolsを嫌うことはありませんが(少なくとも髪を引っ張って数日後)、私は現在のスコーンの実装が嫌いです。 – jonthalpy

+0

cmakeの使用を検討しましたか?私はこれが反対であると言っているわけではない、正直にもcmakeについて好きではないものがある。しかし、私の経験では、cmakeはautotoolsよりも痛みが少なく、ほとんどの場合うまく動作します。問題がある場合は役立つ情報を見つけるのが難しくありません。私は間違いなくautotoolsのためにこれを言うことはできません。 –

答えて

2

あなたの説明に基づいて、私はあなたが株式のautotools-生成configureMakefile、すなわちautoconfautomakeを使用してプロジェクトを構築していることを示唆している、とあなたconfigureやごMakefileするためには、あなたのsetup.pyを実行するの世話をするのいずれかを持っているでしょうPythonのビットを設定します。

私は主にC/C++コードのプロジェクトをPerlモジュールと共に持っています。これはあなたがやろうとしているのと似ていますが、PythonではなくPerlです。私Makefile

Makefile.amから生成された)、私はPythonのsetup.pyに類似しているPerlモジュールのMakefile.PLを、実行ターゲットを持っており、そのように私はシームレスに一緒に、C++のコードの残りの部分と一緒にPerlモジュールをビルドします、単一のビルドとして。かなりうまくいく。

automake'sMakefile.amは非常に自由であり、柔軟性があり、これらのような外部ビットを組み込むように容易に適応および拡張することができる。

+0

ありがとう!ですから、setup.pyはmakeで実行してください。もしあなたがこれをやる方法を詳述することができれば、それはすばらしいことでしょう。あなたはPythonモジュールのディレクトリにあるMakefile.amにinstall-hookを作成しますか? – jonthalpy

+1

"setup.py"は$(DESTDIR)に実際に何もインストールしないと仮定していますが、autotools configureスクリプトに似ています。 Pythonモジュールを$(DESTDIR)にインストールするには、追加のコマンドを実行する必要があります。この場合、 "BUILD_SOURCES = python.setup.done"のようなものを使用し、 "python $(srcdir)/setup.py; touch python.setup.doneのようなものとして" python.setup.done "をビルドするルールを使用します"、次にinstall-hookにファイルを$(DESTDIR)にインストールするために必要な作業を行います。 –

関連する問題