在我的新工作中维护旧源时,我正在努力让事情变得更干净。在本例中,我有一个大项目(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 相同的待遇。
最佳答案
我不会更改 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 编译和链接相同的源代码?
关于c - #include<>'ing 不同版本的 Python.h 并链接多个版本的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637791/