6

我是 C++ 初学者,我开始开发我的第一个跨平台 C++ 项目。我需要使用特定于平台的调用(Win32 和 POSIX),所以我需要在 Windows 和 Linux 中经常编译。

到目前为止,我使用的 Whit 单平台项目是 Linux 中的 KDevelop 和 Windows 中的 Visual Studio 2012。

如何在同一个项目的两个不同操作系统中使用两个不同的 IDE?

  1. 我应该使用单一的跨平台 IDE 吗?
  2. 我应该学习 CMake(或类似的)并将其配置为与两个 IDE 一起使用吗?
  3. 我可以/应该在网络上托管我的代码并自动与离线项目同步吗?
  4. 备择方案?

在此先感谢大家。

编辑:

只是为了澄清,该项目将是一个用于学术协议的简单服务器。将有一个客户端要求向/从服务器上传/检索一些文件。对于学术,我的意思是,例如,我必须使用 pthreads/win32 线程而不是更高级别的 C++ 线程库。

4

5 回答 5

6
  1. 也许——真的取决于你觉得最舒服的东西。由于该项目是非图形化的,因此 IDE 为您提供的只是文件编辑和编译。因此,您可以在一台装有 IDE 的机器上构建项目,然后将源代码移到另一台机器上进行编译。

  2. 我个人只有两个 makefile,一个用于 Linux,一个用于 Widnows。让生活变得相当简单[你可以有一个“外部”makefile,它可以根据一些聪明的方法选择正确的makefile]。

  3. 是的,您应该找到适用于 Windows 和 Linux(git、mercurial、subversion、bazaar 和其他几个)的版本控制系统。这样,您不仅有一个中央存储库[您可以将任何一台机器用作其中任何一台的“服务器”],而且它还允许您跟踪您的更改。绝对值得做!

  4. 有数百种不同的选择。但是你保持它越简单,你的工具越不复杂,你花在实际编程项目上的时间就越多,而不是弄清楚为什么 CMake 没有按照你想要的方式构建。

此外,请确保将所有特定于系统的代码分离到每个体系结构的一个文件中。这样,以后很容易移植到另一个体系结构,并且它使您的大部分代码在两个系统上都可以编译。

于 2013-01-20T18:37:31.470 回答
3
  1. 通常,很容易将特定于 IDE 的项目/构建文件调整为添加/移动/删除的源文件。因此,使用跨平台 IDE 并不那么重要。
  2. 你可以这样做,我认为 CMake 还可以为一些 IDE 创建项目文件,然后可以用来构建项目。
  3. 咳咳,是否要在线托管是您的选择。您绝对应该做的是使用某种版本控制。错误跟踪系统也很有帮助。如果您无论如何都想开源代码,那么使用现有的托管设施之一是肯定的。
  4. 并不真地。

不过有一条评论:使 C++ 代码可移植会遇到更多麻烦。在像 Qt 这样的工具包之上构建是一个巨大的帮助。如果您想更接近标准 C++,至少考虑将 Boost 用于线程、智能指针、文件系统访问等内容。祝你好运!

于 2013-01-20T18:30:59.707 回答
2

我最近的经验建议看一下Qt。IDE (QtCreator) 非常好,可在所有主要平台上使用。

我用过一个相当简单的项目,它使用相当复杂的组件,比如 OpenCV 和 ZBar。我在 Linux 上开发,将源代码复制到 Windows,然后重新编译。

我在两个平台上设置 OpenCV 都遇到了一些麻烦,所以我不能说它超级简单,但它确实有效。既然您已经了解 KDevelop,那么您应该已经了解 Qt。

我也非常看重最近的趋势,将 Qt5 视为智能手机上的 Ubuntu 平台。我真的希望看到这种发展。

高温高压

于 2013-01-20T18:26:56.080 回答
1
  1. 它会有所帮助,您很可能需要在许多平台上进行调试……想到 Qt Creator、Netbeans 和 Eclipse。

  2. 是的。cmake,或者 Qt 的 qmake 可能

  3. 不是技术问题。只需使用版本控制!github 和 gitorious 是开源项目的简单选择。

  4. Qt 是跨平台 C++ GUI 应用程序的明智选择,也是没有 GUI 的网络应用程序的不错选择。

于 2013-01-20T18:49:34.160 回答
1

如何在同一个项目的两个不同操作系统中使用两个不同的 IDE?

我应该使用单一的跨平台 IDE 吗?

不,我认为这是一个问错问题的例子。要制作跨平台项目,重要的是您的构建脚本和代码的系统中立性质。有时,为首选 IDE 提供项目文件可能会有所帮助,但为多个 IDE 维护多个项目文件只会让事情变得更加困难和复杂。相反,您应该专注于寻找一个能够最大限度地减少您花费在项目维护上的时间的构建系统。

为此,CMake 和 PreMake 似乎是实现这一目标的两个最佳工具。

有几十种替代方案(如 SCons、Cook、kbuild、Jam 和 Boost Jam 等),但由于 CMake 和 PreMake 都生成项目文件和构建脚本,它们可能是最好的解决方案。

您的里程会有所不同。

我可以/应该在网络上托管我的代码并与离线项目自动同步吗?

您应该拥有可以在任何地方工作的强大源代码控制。如果您使用某种“云”托管(如 Github 或 BitBucket),Git 和 Mercurial 似乎效果最好,但它们绝不需要它。根据您的工作环境和团队规模,您可能更喜欢 Subversion 或 PerForce 或其他东西,但这取决于您和您的团队。

于 2013-01-20T18:43:09.033 回答