在Boost Python中运行bjam时出错

时间:2013-05-17 21:25:59

标签: c++ boost build boost-python boost-bjam

我在我的系统中安装了boostpro(boost 1.47)。 (Windows 7 32位) 当我在“C:\ Program Files \ boost \ boost_1_47 \ libs \ python \ example”上运行bjam命令时出现以下错误

C:\Program Files\boost\boost_1_47\libs\python\example\boost-build.jam attempted
to load the build system by invoking

   'boost-build ../../../tools/build/v2 ;'

but we were unable to find "bootstrap.jam" in the specified directory
or in BOOST_BUILD_PATH (searching C:\Program Files\boost\boost_1_47\libs\python\
example\../../../tools/build/v2).

这是什么意思?我的系统中甚至没有工具/ build / v2。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以测试Scons,而不是与bjam战斗。有一天,我正在编写一个使用boost :: python的应用程序,Scons帮助了我很多。对我来说,一切都要简单得多。

以下是Sconstruct的一个例子:

import os, shutil, platform, re
import SCons.Builder

def copyLibBuilder( target, source, env):
   '''copy library'''
   shutil.copy( str(source[0]), str(target[0]) )
   return

env = Environment()

env.Append( ENV = {'PATH' : os.environ['PATH'] })

if(platform.system() == "Linux"):

   env.Append( CPPPATH = ['/usr/include/python2.7'] )
   env.Append( LIBPATH = ['/usr/lib/python2.7'] )

   env.Append( CPPFLAGS = '-Wall -pedantic -pthread -O3 -std=c++0x -lboostpython' )
   env.Append( LINKFLAGS = '-Wall -pthread' )

   env.Append( LIBS = [ 'boost_python' ] )

elif(platform.system() == "Windows"):
   env.Append( CPPPATH = [ Dir('C:/Boost/include/boost-1_52'), # path to installed boost headers 
                           Dir('C:/Python27/include') ] ) # path to installed python headers
   env.Append( LIBPATH = [ Dir('C:/Boost/lib'), # path to boost library
                           Dir('C:/Python27/libs') ] ) #path to python

   env.Append( CPPFLAGS = ' /EHsc /MD /D "WIN32" /D "_CONSOLE" /W4' )
   env.Append( LINKFLAGS = ' /SUBSYSTEM:WINDOWS ' )

else:
   print platform.system() + " not supported"

#build C++ library
cpplib = env.SharedLibrary( target = 'sources', 
                source = ['file1.cpp', 'file2.cpp'])
if(platform.system() == "Linux"):
   target = 'my_new_module.so'
elif(platform.system() == "Windows"):
   target = 'my_new_module.pyd'
env.Command(target, cpplib, copyLibBuilder )