c - #include<>'ing 不同版本的 Python.h 并链接多个版本的 Python

标签 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 相同的待遇。

最佳答案

我不会更改 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/

相关文章:

在 C 中更改 .bin 文件的数据

c - 动态分配的二维数组出错

c++ - 在/usr/local/lib 中为 C++ 安装 xmlrpc

c - make---linux和windows格式

c++ - 生成文件及其用途

makefile - 如何从 autotools 生成的 makefile 中删除 -Werror?

c++ - 如何在 MFC 中禁用 CListCtrl 的水平滚动条?

c - 最短函数运行时无法读取内存

在 Mac OS X 上找不到 C 头文件

sqlite - fatal error : sqlite3. h:没有那个文件或目录