3

在我的新工作中维护旧资源时,我试图让事情变得更清洁。在本例中,我有一个非常静态地依赖于 python2.5 的大项目(1,001 个源文件)。在我的开发机器上,我安装了 2.6,我试图让这个项目包含并链接 >=2.5 和 <3.0。

我目前看到两个问题。从 .c 文件:

#include <python2.5/Python.h>

从makefile

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 回答