Fltk1.1.10在vs2008下面編譯通過~

Fltk1.1.10在vs2008下面編譯通過~

Fltk 的下載地址

穩定版本1.1.10

http://www.fltk.org/software.php?VERSION=2.0.x-r7725

總結一下,需要改的主要爲以下幾點:
1>在fltk和fltk兩個工程文件的 “ 屬性 - C/C++ - 預處理器 - 預處理器定義 ”中加入__WIN32__ 
2>註釋掉Cursor.cxx 文件中的
#warning we assume PixelType = 6 ARGB32 in test it is true for color images
3>註釋掉Cursor.cxx 文件中的

// FL_API fltk::Cursor *fltk::cursor(Image *img, int x, int y) {
// img->fetch();
// fltk::Cursor *c = new fltk::Cursor;
// c->cursor = create_cursor_from_image(img, x, y);
// c->resource = 0;
// return c;
// }

4>[重要]添加src文件夾下面的WidgetAssociation.cxx文件到fltk工程[重要]
5>修改配製Debug Cairo爲 Debug

Boost編譯

bjam stage --toolset=msvc-9.0 --without-python --without-mpi --without-wave --without-graph --without-math --without-serialization --stagedir="I:/TDDOWNLOAD/boost_1_44_0/bin.v2/libs/vc9" link=static runtime-link=shared threading=multi debug release

stage/installstage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因爲install生成的這個include目錄實際就是boost安裝包解壓縮後的boost目錄(E:/SDK/boost_1_39_0/boost,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間。

toolset指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc- 9.0(VS2008)等。

without/with選擇不編譯/編譯哪些庫。因爲python、mpi等庫我都用不着,所以排除之。另外,wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態lib都非常大,所以不需要的也可以without掉。這可以根據各人需要選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應該到python官方主頁http://www.python.org/下載安裝。

stagedir/prefixstage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:/SDK/boost_1_39_0/bin/vc9,VC6對應的是E:/SDK/boost_1_39_0/bin/vc6,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那麼還將生成頭文件目錄,vc9對應的就是E:/SDK/boost_1_39_0/bin/vc9/include/boost-1_39/boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。

build-dir編譯生成的中間文件的路徑。這個本人這裏沒用到,默認就在根目錄(E:/SDK /boost_1_39_0)下,目錄名爲bin.v2,等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設置。

link生成動態鏈接庫/靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用 static方式。一般boost庫可能都是以static方式編譯,因爲最終發佈程序帶着boost的dll感覺會比較累贅。

runtime-link動態/靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯。一般link只選static的話,只需要編譯 2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。

threading單/多線程編譯。一般都寫多線程程序,當然要指定multi方式了;如果需要編寫單線程程序,那麼還需要編譯單線程庫,可以使用single方式。

debug/release編譯debug/release版本。一般都是程序的debug版本對應庫的 debug版本,所以兩個都編譯。

本人按以上方式分別編譯了靜態鏈接和動態鏈接兩個版本後,整個E:/SDK/boost_1_39_0目錄(包括安裝包解壓縮文件和編譯生成的庫文件)只有不到500MB。事實上編譯完成後安裝包解壓縮文件除了boost目錄之外其他目錄和文件已經可以刪除了,這樣還可以騰出150MB的空間來。不過我又研究了一下,其實libs這個目錄也很有用,它提供了所有Boost類的使用範例,平時可以作爲參考;另外doc目錄是一個完整的boost 使用幫助文檔,當然最好也不要刪了。這樣剩下的幾個目錄和文件加起來也就十多兆,索性都給它們留一條生路吧。

呵呵,一個完整而又完美的boost目錄就此誕生了。

如果圖省事,不想了解這麼多,那麼有簡單的方法,可以使用命令:

bjam --toolset=msvc-9.0 --build-type=complete

直接指定編譯器以完全模式編譯即可,這樣可以滿足今後的一切使用場合,但同時帶來的後果是:

1、佔用3G以上的硬盤空間
2、佔用若干小時的編譯時間
3、頭文件和庫文件存放於C:/Boost(個人非常反感)

4、生成的很多文件可以永遠也用不上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章