为什么要做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开发方面应用很多。