C++ 如何使用boost.python进行编译?

C++ 如何使用boost.python进行编译?,c++,macos,boost-python,bjam,C++,Macos,Boost Python,Bjam,我正在尝试使用boost.python编译一个项目,如文档所示。我的平台是MacOS X,i386架构。我使用的是boost的当前版本v1.55。${BOOST}/libs/python/example/tutorial/中提供的示例编译并正常工作。但是,在boost根目录之外的其他目录中设置我自己的项目时,我遇到了以下问题:当我键入${boost}/bjam toolset=darwin architecture=x86 address model=32时,我收到以下错误消息: Unable

我正在尝试使用boost.python编译一个项目,如文档所示。我的平台是MacOS X,i386架构。我使用的是boost的当前版本v1.55。
${BOOST}/libs/python/example/tutorial/
中提供的示例编译并正常工作。但是,在
boost
根目录之外的其他目录中设置我自己的项目时,我遇到了以下问题:当我键入
${boost}/bjam toolset=darwin architecture=x86 address model=32
时,我收到以下错误消息:

Unable to load Boost.Build: could not find "boost-build.jam"
---------------------------------------------------------------
Attempted search from ${CURRENT_PATH} up to the root at ${SOME_OTHER_PATH} and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: /usr/share/boost-build.
Please consult the documentation at 'http://www.boost.org'.
make: *** [all] Error 1
bjam
工具的文档未被引用,
bjam--help
只返回一条错误消息,谷歌搜索只会发现(根本不涉及问题)和(页面顶部的链接显示,这似乎已经过时)

问题:如何指定
boost build.jam
文件的路径?或者,是否有其他方法将boost.python与标准工具一起使用


更新3:选项
-d4
允许
bjam
打印详细的调试输出。如果已知编译器的名称,则编译器调用的输出可以是
grep
ped。然后可以使用它来构造一个“常规的”
Makefile
。例如,有关如何执行此操作的示例,请参见(尽管假定编译和链接器命令是已知的)。

大多数boost库仅为标头(即,您只需提供使用它们的包含路径),但boost.python不是其中之一。它有两部分:标题和.so
bjam
的唯一任务是构建.so文件,之后就不再需要它了。只需链接到.so,就像你链接到其他任何库一样。@Adam:我遇到过一种“只链接到.so”不起作用的情况。该库在Python中不可用,除非我在链接文件时使用了正确的选项。事实证明,这些都是特定于编译器和平台的,它们与天真的期望不一样。boost.python教程页面明确建议使用
bjam
来构建我自己的工件,可能正是出于我遇到的原因。你嫁给boost.python有什么特殊原因吗?我喜欢boost.python的一些设计,但构建需求正是我选择SWIG的原因。在我看来,如果您想将代码分发给其他人,那么这些构建需求将使boost.python无法启动。Python对构建标志非常挑剔,有些扩展根本无法链接。SWIG发出一个.cpp文件,该文件与扩展名的其余部分一起编译。例如,您可以使用distutils,它将为您构建的特定Python安装提供所有标志。