不要bjam了,讓python與boost更加自由的混搭

[我下的是1.51]
流水的記錄下這兩天折騰boost/MinGW環境的過程[注意用標準的cmd,不要用msys]
1.編譯bjam:
到tools\build\v2\engine目錄下,輸入build mingw,
這會在tools\build\v2\engine\bin.ntx86下生成b2.exe和bjam.exe兩個文件
拷貝到主目錄,並將主目錄添加到環境變量中
2.編譯boost:
修改tools\build\v2目錄下的user-config.jam,開啓編譯python的選項
在主目錄輸入bjam --toolset=gcc link=static stage --with-Python
這一步較爲耗時,但過程還算歡快!
3.拷貝文件:
將在stage目錄下生成的庫文件以及boost頭文件複製到MinGW相應的目錄下
至此C++的配置搞定了
4.搞定Python的
新建一個名爲test文件夾
複製libs\python\example下boost-build.jam文件至此,
修改其中../../../tools/build/v2至絕對路徑
複製libs\python\example\tutorial整個文件夾到test文件夾
僅保留hello.cpp,hello.py,Jamroot這三個文件便可
修改Jamroot中
use-project boost
  : ../../../.. ;
use-project boost
  : XXXX ;  <--此處XXXX應改成boost所在的絕對路徑主目錄
如今的目錄結構是
test
|----boost-build
|----tutorial
     |----hello.cpp
     |----hello.py
     |----Jamroot
5.編譯python的hello,world:
在tutorial目錄下輸入bjam便可完成編譯的過程
執行時,輸入python hello.py便可
6.不使用bjam的編譯:
在tutorial目錄下輸入bjam -d+2 >t.txt
從t.txt可得到bjam具體調用的命令
其中有兩部最爲重要的是和g++相關的產生.o文件,以及.a和.pyd文件的編譯指令,
能夠修改至以下版本

"g++"  -ftemplate-depth-128 -O0 -fno-inline -Wall -g    -I"C:\Python27\include" -I"E:\CodeRepo\boost_1_51_0" -c -o "hello.o" "hello.cpp"

"g++" -L"C:\Python27\lib" -Wl,-R -Wl,"C:\Python27\lib" "-Wl,--out-implib,libhello_ext.dll.a" -o "hello_ext.pyd"  -shared -Wl,--start-group "hello.o" "E:\CodeRepo\boost_1_51_0\bin.v2\libs\python\build\gcc-mingw-4.7.0\debug\libboost_python-mgw47-d-1_51.dll.a"  -Wl,-Bstatic  -Wl,-Bdynamic -lpython27 -Wl,--end-group -g 

即,不使用bjam時,直接調用這兩條也可完成編譯.
相關文章
相關標籤/搜索