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、生成的很多文件可以永远也用不上

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