关于c++跨平台开发的几点思考

来源:互联网 发布:嵌入式软件什么意思 编辑:程序博客网 时间:2024/05/21 17:23

为什么要做C++跨平台开发

从我参与的两个项目看,一般都是要求底层库可以跨平台。UI上层可以采用现有的跨平台UI框架,也可以使用平台独有的UI框架(为了更好的使用平台特性)

c++底层库封装了大量的io操作,或者是产品开发所需要调用的相关API。这样可以更好的复用code,降低跨平台开发的成本。

而且可以很好地控制核心API的开发和维护,由单独的一个team来完成,从而更好的控制风险和质量。


如何跨平台

一般来说,我们都会使用C++ std library,这是国际c++标准委员会制定的。对各个编译器来说应该都是支持的。

但是遇到和一些linux,windows等平台上编译器所特有的一些库,函数,这个时候我们就需要区别对待了。

1. 很多人都是实现的时候通过宏来控制相关的代码段。但是当碰到大量的平台差异时候,代码就非常凌乱,到处都是宏,看了就没胃口了。

2. 为了避免上述问题,我们可以把平台差异实现分开,作为两套实现文件。然后通过预编译宏来控制引用哪一个头文件。这样看上去相对来说清晰很多。

3. 最近在新的项目中,发现了一个跨平台工具cmake.  我们可以在cmake里面来针对相关平台直接引用相关的文件。让宏在生成相关project的时候就起作用。

这样看起来就更清楚了。

4. 可以使用跨平台的lib。如boost,qt. 其本身就是跨平台的。我们用起来就十分方便了。QT不光是写了大量的C++ library,其UI框架也是跨平台的,所以它现在在跨平台UI开发方面应用很多。