我正在使用Visual Studio 2010处理c ++多平台项目,所有平台之间都有共享的代码部分,但是每个平台都有很大一部分,我使用#if def将它们分开,但事实证明,代码维护变得非常糟糕,而且代码混乱,除了代码无法编译而某些定义打开或关闭的问题。
是否有任何用于Visual Studio的插件或工具可以帮助开发多平台项目,例如隐藏与平台相关的代码,或者使用不同的#defines开启/关闭编译,检查数据类型,等等。
如果有人提出建议,我将不胜感激
答案 0 :(得分:3)
我不知道VS的这个插件,但由于它基本上只是一个Windows的IDE,我怀疑有没有。 (但当然我可能错了)
如果您正在寻找一个良好的跨平台构建系统,我会期待CMake。它功能强大,易于上传,可以为几乎任何流行的IDE /工具链(Visual Studio解决方案,Eclipse项目,MinGW Makefile,GNU Makefile等)生成构建文件。
它使大型项目的跨平台开发变得轻而易举!
答案 1 :(得分:2)
如果切换到Qt框架,您可能可以消除大多数与平台相关的代码。您可以继续使用VS和Qt附加组件,并使用Qt的平台抽象,您可以使用(几乎)相同的代码库来定位许多不同的平台。您将获得无与伦比的平台支持和可移植性:
API也更好IMO - 不那么丑陋和笨拙,更一致。此外,QML(用于从C ++组件构建应用程序的JSON样式标记,使用JS进行粘合代码和值绑定)可以显着提高您的工作效率(最多10倍而不会夸大)。 Qt工具链支持不同的工具包(库版本编译器和平台的组合)和多平台交叉编译。
答案 2 :(得分:1)
没有“工具”比视觉工作室本身更多。将代码分离到不同的项目;每个平台的通用代码和项目项目。
不要忘记:
1. Add reference to common project in all platform-dependent projects (so common project is compiled before platform project).
2. Add common project base to the common include directories of each target project.