C++ 如何编写C++;在IDE之间工作的代码?

C++ 如何编写C++;在IDE之间工作的代码?,c++,xcode,eclipse,cross-platform,C++,Xcode,Eclipse,Cross Platform,我是从C#NET和VisualStudio背景(以及一些Objective-C/XCode)开始的C++新手 我想用C++编写跨平台(Windows,OS X,Linux)应用程序。我从Mac上的TextMate和Windows上的记事本开始,使用命令行/终端上的g++编译代码,在其平台上构建可执行文件 当我开始使用IDE(即VC++、XCode和Eclipse)时,我感到困惑。在粘贴代码之前,我尝试了这三种方法并创建了项目。如果我开始在一个IDE中编辑,我不知道如何让最终的代码片段在不同的平台

我是从C#NET和VisualStudio背景(以及一些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\u h
文件等)。在Xcode中,它生成一个文件夹
Foo
constains
main.cpp
Foo.l
)-就是这样。为什么不同

<>我认为C++代码只是C++代码,如果在平台上编译,它可以生成平台特定的可执行文件。(例如,在Mac上编译,它将成为Mac可执行文件;如果在Windows上编译,它将成为Windows可执行文件)

似乎,一旦我开始使用IDE,我的C++代码就会自动变得不可移植,因为所有这些自动生成的文件我都不懂。我试图同时阅读XCode、Eclipse和VisualStudio上的文档,这让我更加困惑。我只想写C++……/P> < >我也遵循了经典文本来拾取C++,在书中,没有什么类似于代码的标题或源代码。 <>除了使用记事本/TeMatal+G++编译器,我如何在一个可以跨平台的IDE中编写纯的、可移植的C++程序,或者甚至是可能的?

< P>默认(=最常用的)C++类的文件结构称为<代码> Foo由一个名为<代码> Fo.H./Cuth>的头文件组成,它包含了<代码> Foo的类定义,以及<代码> Fo.CPP,其中包含了<代码> FoO < /C> >的定义。 通常,所有头文件都放在一个名为
include
的单独文件夹中

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

  • 手动创建文件夹结构(例如,
    include
    src
    make
    文件夹位于项目文件夹
    MyProject
    ,IDE的项目文件将进入make,.h文件进入include,.cpp文件进入src)
  • 使用explorer/finder/…手动为类创建.h和.cpp文件
  • 使用“添加现有文件”或类似的方法将这些文件添加到IDE的项目文件中
  • 正如Rup指出的,对于VisualStudio,应该使用“空项目”预设,否则它将添加一些您不想要的头文件

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

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


在windows、linux和mac上获得平台依赖代码最容易的方法是使用QtCreator作为IDE,它还有很多很好的教程

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

您需要头文件在编译单元之间共享类定义,并向其他使用者共享库接口。如果您在一个文件中完成所有操作,则不需要它们。其他项目模板可能对该平台非常有用,例如,VC创建stdafx.h用作预编译头,以加快在构建时包含所有Windows API头的速度。如果您担心,扔掉模板项目生成的文件,只从一个空文件开始。而
FOO_H_
等是一种机制,如果您通过不同的路径在同一个编译单元中包含头文件两次,那么它可以避免重新解析头文件两次。我,OP,已经非常困惑,现在是“CMake”、“useboost”和“Qt”…HuarrrBost和Qt是库,如果您使用它们,将隐藏许多特定于平台的详细信息。这意味着将避免编写#ifdef"u WIN32。。。。当你在编大量新事物时,你正在学习C++,我应该注意到这点。更新了答案并链接到一个IDE,该IDE允许您以柏拉图式独立方式编写代码,并且所有柏拉图式都存在相同的IDE,因此您只需学习一个。+1。请注意:大多数IDE(例如Eclipse、MSVC)都允许创建.cpp和.h文件(并为它们指定文件夹),因此不需要使用资源管理器来创建源文件。此外,Eclipse在默认情况下使项目文件夹与文件系统结构保持同步,因此可以使用IDE创建目录(只需在项目中创建一个子文件夹)。没错,如果您希望大量人员自己编译项目,则只需支持多个IDE。如果您打算自己编译它,那么您可以在一个IDE中使用多个编译器。