【编译人生】跨平台程序设计BOOST库以及编译方案的选择

boost库很方便,不用说,下面是编译方法,以WINDOWS平台为例。

1.在 boost解压缩文件路径下(可能不同版本的路径位置build有所不同)

cd /d ../tools/build/v2/engine 

如果是1.78,则目录位置-\boost_1_78_0\tools\build\src\engine

2.在命令行下进入该目录输入

3.执行(选择GCC而不是VS编译器是为了考虑跨平台移植以及更多的去采用平台无关特性的库

 build.bat gcc

4.在当前目录将会生成两个文件,里面包含两个exe文件b2.exe,bjam.exe

5.这两个文件拷贝到项目根目录,然后输入命令

bjam stage --toolset=gcc --stagedir="c:\boost" architecture=x86 address-model=32 link=static runtime-link=shared threading=multi debug release

architecture=x86指定架构

address-model=32 指定32位还是64位的

link=static静态库编译便于多路分发

程序设计及编译方案的选择:

1.编译建议选择32位,便于全平台使用,即使64位能够发挥很多作用

2.建议使用静态库,再编译动态库,能够最大程度减少使用库所依赖的函数

3.C++11之后吸收了不少BOOST的新特性,对于可以由C++独立完成的如线程库、原子操作、模板类编程,尽量采用 C++自身的特性,尽管本文是推荐使用BOOST

4.Boost库之间依赖有顺序关系,这一点会在给一些小白遇到,提示link error的错误,以及可能会跟C++11以上的版本有冲突,比如正则库等等,这一点会爆莫名其妙的错误

在移动开发如此盛行的年代,之所以还要用BOOST,一方面是因为避免了重复造轮子,另一方面,BOOST的很多设计都比较前瞻,给人很好的启迪。下面也简单举几个比较有用的例子,能够帮助你快速开发的一些小技巧

A.序列化

将C++对象变为文本流或二进制流存储到IO上,这种操作在JAVA框架下比较盛行,容易理解,但是对C++来说同样也是适用且受欢迎。

//此处是对序列化的一个举例

B.命令行

PROGRAM OPTIONS在很多人看来是莫名其妙的事情,但是对于构建一个大型程序来讲,除了设计能够重复使用的DLL外,命令行程序是一个不错的选择,能够采取进程调用的方式进行处理,同时易于被移植

C.多进程

Process 比较棘手的是进程间通信的问题,但由于多进程的存在,简化了PC程序的开发,可以调用很多系统自带的服务软件

D.ASIO

网络消息异步处理采用比较多的框架之一,相对于其他复杂的网络框架,性能和入手简单都是不错 的均衡选择

E.消息框架

MPI是一款高性能并行应用程序中传递消息的库,这种消息库对于简单的程序来讲可能不需要,但是如果要构建一个复杂的、支持版本更新的、灵活处理各种复杂功能的软件,最好还是采用这个思路,能够很好的降低模块之间的耦合。

F.常用工具库

如正则、多线程、文件系统、容器等等,这些标准化的代码帮助我们减少了重复性造轮子的时间,特别是跨平台的支持,更是为实现了一次编写多处编译的目标。

你可能感兴趣的:(CSDN精华,Compile,Guide,c++,开发语言,后端)