Microsoft Visual Studio:Windows和Unix项目源代码兼容性

我将为Windows和Unix操作系统体系结构开发一个命令行工具。但是我正在面临一场斗争。我怎样才能使代码在Windows和Unix之间有效地转换?Microsoft Visual Studio:Windows和Unix项目源代码兼容性

项目将主要使用MS Visual Studio C++语言编写。不过,我希望我的工具是跨平台的,所以我可以在Windows和Unix系统中使用它。由于Unix不支持Visual Studio,因此我需要在某种程度上设计代码结构以支持两种体系结构(都是32位),并且OS专用标头需要包含在代码所在的唯一一个操作系统体系结构中。

所以我在寻求你的帮助。为Windows和Unix维护几乎相同的代码的最有效方法是什么?对于该特定操作系统的所有必需头文件?所以我可以在Windows中创建program.exe文件,在Unix中创建program.run文件?测试当前操作系统体系结构(Windows或Unix)的一些条件,并包括与操作系统相关的头文件?

怎样编码?由于Windows命令行使用MS-DOS编码(在中欧,它是DOS代码页852),Unix终端使用UTF-8编码。我的工具将是多语言的(与贡献者,从我的身边开始英语和捷克语)。

我需要保持代码结构尽可能小,当然也容易维护。源代码应该可用于来自GitHub存储库的克隆/分支。

如果这不是适合堆栈溢出的问题,那么只需告诉我,我会删除它。只是寻求帮助,没有别的。

回答:

步骤1)设置您的持续集成系统,从第一天起每次都在Windows和Unix上构建代码。最好在每个平台上有多个编译器。

步骤2)使用跨平台构建系统,如scons或cmake。

步骤3)不要在程序中使用任何平台相关的代码在所有 - 当你来,实现在各种ifdef警卫多个版本。优先使用跨平台库。

步骤4)请确保您有足够的单元测试(特别是对位,你必须使用特定于平台的代码来实现的东西多次),并确保您的CI系统运行所有测试为每次提交。

步骤5)确保从第一天开始所有文本都是UTF-8编码 - 转换为其他编码可以发生在显示层,但在内部保留UTF-8的所有内容。

步骤6)在所有支持的平台上进行大量的手动测试。

并确保调整每个编译器的警告设置waaay并发出警告错误(并修复所有这些错误)。在一个平台上使用一个编译器的警告通常会在另一个平台上以不同编译器的方式静默编译。

回答:

首先,Windows控制台可以使用utf-16,但不能使用utf-8。其次,如果你坚持使用标准的C++库,可能使用boost进行扩展(必须安装在windows和任何你将建立的* nix系统上),只要你在说话,你真的不应该有任何问题关于严格接受执行工作和打印结果的命令行参数。

如果你谈论的是终端控制(即,屏幕某处比下一个字符细胞等,特别是要落后于印刷)这将是更困难不少。

我会,不过,建议您使用cmake的基于项目时,Visual Studio通常使用自定义的MSBuild构建管理和是不会帮助,如果你尝试的* nix系统建设。

以上是 Microsoft Visual Studio:Windows和Unix项目源代码兼容性 的全部内容, 来源链接: utcz.com/qa/266748.html

回到顶部