2012-08-24 25 views
2

我正在继承一个使用bjam和boost-python构建用C++编写的Python模块的项目。该Jamroot中原先包含:如何让bjam在Windows上检测我的Python安装?

constant PYTHON_ROOT : C:/Python26 ; 
using python : 2.6 : $(PYTHON_ROOT) ; 
use-project boost : C:/boost_1_40_0 ; 

我的Python 2.7安装,而不是,所以我把它改为:

using python : 2.7 : C:/Python27 ; 

我然后跑bjam --toolset=msvc --with-python,其失败的(很慢” ......耐心了。 ..“一组消息),因为它找不到pyconfig.h或任何Boost库文件。我把它改为:

using python : 2.7 : C:/Python27/python.exe : C:/Python27/include : C:/Python27/lib ; 

更明确一些的路径,这似乎已经解决了这个问题pyconfig.h,虽然我是有一个2.6版本,即使我指定--python=2.7上述线路的问题。

现在我得到一堆像LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-1_40.lib'这样的Boost链接器错误,尽管它们存在于C:/boost_1_40_0/stage/lib/中。

任何想法我错过了什么配置标志?

+0

你是否尝试将'PYTHON_ROOT'改为'C:/ Python27',而不是仅仅将一个不同的值硬编码到'using'语句中?前者可能在其他地方被引用。 – martineau

+0

PYTHON_ROOT似乎只是在这个Jamroot文件中的一个快捷方式,而不是在子目录中的任何Jamfiles中,除非bjam预计PYTHON_ROOT在别的地方。 – UltraNurd

回答

1

我认为这是一个“的Boost.Python”的范围内“C:/ boost_1_40_0”与python2.6的 内置但是你要使用的python2.6的的“Boost.Python的”为现今Python2.7二进制和图书馆。这是一个常见的错误。你应该用Python2.7重建Boost源代码包!

+0

这确实最终成了问题 - 我们一直在传递一个旧的boost阶段目录,其中包含针对Python 2.6构建的libs。 – UltraNurd

1

取决于什么是你Jamroot中的文件,你可能需要添加几行向开头:

use-project boost : <Full path to your boost root directory> ;

这应该告诉你的项目中使用在目录中找到提升。

<library>/boost/python//boost_python

有了这些:

此外,在您的项目行,一旦你使用项目增强命令,你可以在你的项目定义的需求部分增加对升压蟒蛇库要求两行添加到我的Jamroot文件,我不再有链接问题。

如果你可以发布你的Jamroot文件,我们可以看看是否有什么更具体的需要。