#include<>不同版本的Python.h并链接到多个版本的Python

时间:2012-07-24 19:16:53

标签: c makefile

在我的新工作中保持旧的来源,我正在努力使事情更清洁。在这个例子中,我有一个很大的项目(1,001个源文件)非常依赖于python2.5。在我的开发机器上,我已经安装了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同样的待遇。

1 个答案:

答案 0 :(得分:1)

我不会更改C文件,而是包含路径和LDFLAGS。

所以.C会有:

#include <Python.h>

在include路径中添加-I / path /到/ python / 2.5 / include和-Lpython2.5

如果使用makefile,则可以使用+ =向include路径和库路径添加选项。

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编译和链接相同的源代码?