3

新しい仕事で古いソースを維持することで、物事をよりきれいにしようとしています。この例では、python2.5 に非常に静的に依存する大きなプロジェクト (1,001 個のソース ファイル) があります。私の開発マシンには 2.6 がインストールされており、このプロジェクトに >=2.5 および <3.0 を含めてリンクさせようとしています。

現時点で 2 つの問題があると思います。.c ファイルから:

#include <python2.5/Python.h>

そしてメイクファイルから

LDFLAGS = $(LIBS) -lusb-1.0 -lpthread -lSound -lsqlite3 -lm -lglib-2.0 -lpython2.5

それで、私の質問は次のとおりです。適切なディレクトリを使用するように.cファイルを変更するにはどうすればよいですか?また、適切なライブラリにリンクするようにmakefileを更新するにはどうすればよいですか?

編集:そして、私がそうしている間、glib-2.0に同じ扱いを与えることができると思います。

4

1 に答える 1

1

C ファイルは変更しませんが、インクルード パスと LDFLAGS を変更します。

したがって、.C は次のようになります。

#include <Python.h>

インクルード パスに -I/path/to/python/2.5/include および -Lpython2.5 を追加します。

Makefile を使用する場合は、+= を使用して、インクルード パスとライブラリ パスにオプションを追加できます。

LDFLAGS = $(LIBS) -lusb-1.0 -lpthread -lSound -lsqlite3 -lm
...
ifeq ($(PYTHON_VERSION),2.5)
    LDFLAGS += -lpython2.5
    CFLAGS += -I/path/to/python/2.5/include
else 
...
endif

PYTHON_VERSION は、設定する必要がある変数です。

または、パスが均一である場合:

LDFLAGS += -lpython$(PYTHON_VERSION)
CFLAGS += -I/path/to/python/$(PYTHON_VERSION)/include

SCONS を使用する場合は、バリアント ビルドを使用してこの種のビルドをスクリプト化する方が簡単です。

Python のバージョンごとに異なるソース コードがありますか?

それとも、異なるバージョンの Python を使用して同じソース コードをコンパイルしてリンクしたいだけですか?

于 2012-09-13T11:53:52.227 に答える