3

我是C#.NET 和 Visual Studio 背景(以及一些 Objective-C / XCode)的C++新手。

我想用 C++ 编写跨平台(Windows、OS X、Linux)应用程序。我从 Mac 上的 TextMate 和 Windows 上的记事本开始,并在命令行/终端上使用 g++ 编译代码以在其平台上构建可执行文件。

当我开始使用 IDE(即VC++XCodeEclipse)时,我感到很困惑。在将代码粘贴到其中之前,我尝试了所有三个并创建了项目。如果我开始在一个 IDE 中进行编辑,我不知道如何让最终的一段代码在不同的平台上编译。

例如,如果我有一个类文件 - foo.cpp. 在 Eclipse 中,它将生成foo.cpp(在其中一个foo.h, foo::foo())和一个单独的foo.h头文件(在其中一个FOO_H_文件等)。在 Xcode 中,它会生成一个文件夹包含Foomain.cpp) foo.l- 就是这样。为什么有区别?

我虽然 C++ 代码只是 C++ 代码,如果在该平台上编译,它会产生特定于平台的可执行文件。(例如在Mac 上编译,它变成Mac 可执行文件;如果在Windows 上编译,它变成Windows 可执行文件)。

看来,一旦我开始使用 IDE,我的 C++ 代码就会自动变得不可移植,因为所有这些我不了解的自动生成的文件。我尝试同时阅读有关 XCode、Eclipse 和 Visual Studio 的文档,这让我更加困惑。我只想写C++...

我也按照Stroustrup 的经典文本来学习 C++,并且在书中,没有提到任何文件的头文件或源.h文件_H_,以及生成所有这些文件的原因。

除了使用 Notepad/Textmate + G++ 编译器之外,我如何在一个可以跨平台的 IDE 中编写纯的、可移植的 C++ 程序,甚至有可能吗?

4

3 回答 3

2

调用的 c++ 类的默认(=最常用)文件结构Foo由一个名为的头文件组成,该头文件foo.h将包含 的类定义Foo,以及一个foo.cpp包含 的方法定义的头文件Foo

通常所有的头文件都放在一个单独的文件夹中,称为include.

因此,具有相同文件/文件夹结构且可用于多个 IDE 的一般方法是:

  • 手动创建文件夹结构(例如include,项目文件夹中的文件夹src,IDE 的项目文件将进入 make,.h 文件进入 include,.cpp 文件进入 src)makeMyProject
  • 使用 explorer/finder/... 为您的类手动创建 .h 和 .cpp 文件
  • 使用“添加现有文件”或等效的东西将这些文件添加到 IDE 的项目文件中。
  • 正如 Rup 指出的那样,对于 Visual Studio,应该使用“空项目”预设,否则它会添加一些你不想要的头文件
于 2012-05-14T09:45:48.990 回答
1

使用 CMake 或其他元构建系统 使用 Boost 和 Qt 尽可能多地抽象出平台。

CMake 允许您为大多数 IDE:s 生成项目文件,这意味着在平台和 IDE:s 之间切换时,您只需告诉 CMake 为您在该平台上使用的那个 IDE 生成新的项目文件。

在 windows、linux 和 mac 上最容易获得平台无关代码是使用 QtCreator 作为 IDE,它也有很多很好的教程。http://qt.nokia.com/downloads

于 2012-05-14T09:48:11.413 回答
1

为什么不全部使用 1 个 IDE?Eclipse 是跨平台的 IDE

于 2012-05-14T10:11:50.163 回答