2009-12-24 21 views
4

我正在研究一个将SWIG绑定到Python的C库。在我的autotools配置中,我检查了gettimeofday函数。我发现我无法编译我的项目的Python部分,因为它与文件pyconfig.h冲突,该文件也定义了HAVE_GETTIMEOFDAY。config.h应该公开吗?与Python冲突

这似乎是一个非常普遍的问题,我很惊讶地看到Python的config.h与我自己的冲突。在我的项目中,我保留config.h私人---即不与make install一起安装。我的印象是这是正确的。我发现至少有one blog post这个意见是共享的。

它是否与我的config.h冲突?

编辑:我加入

AC_DEFINE(Py_PYCONFIG_H,[],[Defined here to avoid conflicts with pyconfig.h]) 

configure.ac解决了这个问题。问题仍然存在,如果config.h在您的项目中公开,或保持私有,只在构建期间可用于实现文件?

+0

好问题。我正在开发一个项目,就像Python一样,让这个公开,我认为你是对的,这看起来像一个bug。 – 2009-12-24 01:15:51

回答

3

它不应该公开,以避免像你一样的问题。请参阅Gentoo autotools best-practices document,具体而言,以开头的段落应将config.h头文件视为内部头文件

在你的情况下,我会做与你所做的完全相同的事情:添加一个阻止处理该文件的#define。

+0

谢谢,很高兴得到一些确认。也许我会把它作为一个Python的错误。 – Steve 2009-12-24 01:22:51