Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解Eclipse生成的文件夹和文件_Eclipse - Fatal编程技术网

了解Eclipse生成的文件夹和文件

了解Eclipse生成的文件夹和文件,eclipse,Eclipse,问题的简短版本:Eclipse生成的对象.mk,源.mk,生成文件,子目录.mk,*.o和*.d文件是什么 问题的长版本: 在我的主目录中,我有工作区目录。每当我创建一个项目并将其命名为ProjectName时,Eclipse就会在工作区文件夹中创建一个新目录(也称为ProjectName) 在我的项目中,我创建了不同的类,每个类都与2个文件关联(源文件ClassName.cpp和头文件ClassName.h)。这些文件被放入工作区/ProjectName/src文件夹中 现在,我在Eclip

问题的简短版本:Eclipse生成的
对象.mk
源.mk
生成文件
子目录.mk
*.o
*.d
文件是什么


问题的长版本:

  • 在我的主目录中,我有
    工作区
    目录。每当我创建一个项目并将其命名为
    ProjectName
    时,Eclipse就会在
    工作区
    文件夹中创建一个新目录(也称为
    ProjectName
  • 在我的项目中,我创建了不同的类,每个类都与2个文件关联(源文件
    ClassName.cpp
    和头文件
    ClassName.h
    )。这些文件被放入
    工作区/ProjectName/src
    文件夹中
  • 现在,我在Eclipse中构建了我的项目,在
    工作区/ProjectName
    中出现了一个新文件夹。它被称为
    Debug
  • 在此文件夹中,只有一个文件的功能我了解:
    ProjectName
    。它是可执行文件。如果我在命令行中键入它的名称,我的程序将被执行
  • 另外3个文件我不知道:
    objects.mk
    sources.mk
    makefile
  • 此外,在
    Debug
    文件夹中有
    src
    目录。它包含我不知道其含义的
    subdir.mk
    文件以及
    ClassName.o
    ClassName.d
    文件(若我有N个类,则将有N对
    *.o
    *.d
    文件)

  • 任何人都可以解释一下这些文件的含义和用途吗?

    对象.mk
    源.mk
    生成文件
    子文件.mk
    是Eclipse根据您的项目类型(可执行文件、库、共享库)生成的生成文件。有关其内容和工作方式,请参阅工具链的
    make
    命令文档。简而言之,它们负责调用编译器和链接器

    ClassName.o
    是编译器生成的目标文件,所有这些文件都将链接到可执行文件或存储在库中(取决于项目类型)


    ClassName.d
    是一个所谓的依赖项引用文件,由编译器(按需)生成并包含在makefiles中,可以跟踪头文件中的更改,并在必要时重新编译相关的源文件。

    据我所知,make文件将目标文件放在一起以获得可执行文件。我不清楚的是为什么我们有这么多制作文件。为什么一个是不够的?它们都被使用了吗?
    makefile
    是主要条目,它包括
    源.mk
    对象.mk
    子目录.mk
    makefile。我没有谈到细节,但我想这是关于构建系统更好的结构和更容易(自动化)的管理。当为项目手动设置buildsystems时,我们通常也会这样做。Make是一种专门的编程语言,它的设计重点是将哪些内容转换为其他内容(.c->.o->executable,或生成文档的任何其他依赖项等)。您只在一个源文件中编写最简单的程序。make也是如此;您使用多个文件实现模块化。