到目前为止,我在 C++ 中的所有开发都针对 Windows,但是我一直在想,有一天我会以 Linux 为目标。因此,我知道需要选择跨平台库,并尽可能保持我的代码可移植(或为不可移植的代码提供替代实现)。因此,这个问题与代码编译问题无关。
我想知道,开发人员在同时针对 Linux 和 Windows 时会面临哪些常见问题?特别是但不限于:
处理配置文件的最佳实践。在 Windows 上,这似乎是相当随意的——我见过软件将它们的配置存储在程序文件夹、用户文件夹(在 appData 下)和注册表中。在 Linux 上,它似乎更倾向于专用配置文件夹 (/etc)。我应该如何处理我的代码中的这些差异?我是对位置进行硬编码,还是可以参考一些系统定义的功能?
与 (1) 相同,但用于记录。
如何让我的项目文件保持同步?例如,如果我更新 Visual Studio 项目文件中的某些内容,我通常是否需要在我正在工作的任何 Linux 环境中手动更新等效的内容,或者是否有避免这种情况的常用方法?
在我的代码中处理平台实现差异的最佳方法是什么?我应该使用
#ifdef
s,还是应该将特定于平台的代码保存在单独的文件中,并让项目指定包含哪些文件?还有什么我没有想到我应该开始考虑/研究的吗?