2013-01-20 37 views
4

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

我正在使用的Whit单平台项目,直到现在,Linux中的KDevelop和Windows中的Visual Studio 2012。

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

  1. 我应该使用单一的跨平台的IDE吗?
  2. 我应该学习CMake(或类似)并将其配置为与两个IDE一起使用吗?
  3. 我能否将我的代码托管在Web中并与离线项目自动同步?
  4. 替代品?

在此先感谢大家。

编辑:

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

+2

在您提出任何其他问题之前,您应该开始接受已经提问的问题的答案。您可以通过点击左侧的tick-icone来接受答案。 – Philipp

+1

你可能会通过做一些关于0%接受率的事情来引发这个问题上的输入热点。 – WhozCraig

+0

对不起,我会接受我以前的问题。 – eang

回答

4
  1. 也许 - 真的取决于你最舒服的感觉。由于该项目是非图形化的,所有的IDE都可以编辑文件和编译。因此,您可以使用IDE在一台机器上构建项目,然后将源移动到另一台机器进行编译。

  2. 我个人只是有两个生成文件,一个用于Linux和一个用于WIDNOWS。使生活相当简单[你可以有一个“外部”的生成文件,根据一些聪明的方法选择合适的生成文件]。

  3. 是的,你应该找到一个版本控制系统,对于Windows和Linux(git的,反复无常,颠覆,集市和其他几个人)都适用。这样,你不仅拥有一个中央存储库[你可以使用任何一台机器作为其中的任何一台服务器],但它也可以让你跟踪你的改变。绝对值得做!

  4. 有数百种不同的选择。但是你保留它越简单,而且你的工具越简单,你就可以花更多的时间来实际编程你的项目,而不是像,例如,弄清楚为什么CMake没有按照你想要的方式构建。

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

1

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

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

我在两个平台上设置OpenCV都有些麻烦,所以我不能说这太容易了,但它工作正常。既然你已经知道KDevelop,你应该已经知道Qt。

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

HTH

2
  1. 通常情况下,很容易调整,具体IDE项目/文件建立,以添加/移动/删除源文件。因此,使用跨平台的IDE并不重要。
  2. 你可以这样做,我认为CMake也可以为一些IDE创建项目文件,然后用它来构建项目。
  3. Ahem,如果你想在网上托管它或不是你的选择。你应该做的是使用某种版本控制。错误跟踪系统也很有帮助。如果您想要开源代码,使用现有的托管设施之一是明确的。
  4. 不是。

一个评论,虽然:你将有更多的麻烦,使C + +代码便携式。建立在像Qt这样的工具箱之上非常有帮助。如果你想更接近标准的C++,至少考虑使用Boost来处理像线程,智能指针,文件系统访问这样的东西。祝你好运!

1

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

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

不,我认为这是问错了问题的情况下。要制作一个跨平台的项目,重要的是您的构建脚本和代码的系统中立性质。有时候可能有助于为您的首选IDE提供项目文件,但为多个IDE维护多个项目文件只会使事情变得更加困难和复杂。相反,您应该专注于查找构建系统,以最大限度地减少您在项目维护上花费的时间。因此,CMake和PreMake似乎是实现这一目标的最佳工具之一。有几十个替代品(如SCons,Cook,kbuild,Jam和Boost Jam等等),但是由于CMake和PreMake都生成了项目文件和构建脚本,它们可能是最好的解决方案。

您的里程将有所不同。

我能否将我的代码托管在Web中并与离线项目自动同步?

你应该有作品无处不在你强大的源代码控制。如果您使用某种类似Github或BitBucket的“云”托管服务,Git和Mercurial似乎工作得最好,但他们并不需要它。根据你的工作环境和团队规模,你可能更喜欢Subversion或者PerForce或者其他的东西,但这取决于你和你的团队。

0
  1. 这将有所帮助,您很可能需要在很多平台上进行调试......Qt Creator,Netbeans和Eclipse让人想起。

  2. 是的。 cmake或qmake for Qt也许

  3. 没有技术问题。只需使用版本控制!尽管如此,github和gitorious是开源项目的简单选择。

  4. 对于跨平台C++ GUI应用程序而言,Qt是一个不费脑的选择,也是没有GUI的网络应用程序的不错选择。