编程定义:究竟是“建设”是什么。(Programming Definitions: What exa

2019-09-01 04:06发布

是什么意思建立一个解决方案/项目/计划? 我想确保我有我的定义,正确的是(所以我不交谈时,听起来像一个白痴)。 在IDE的,你可以(纠正我,如果我错了) 编译源代码/编程码成计算机可读的机器代码。 您可以调试程序,这基本上是步进通过程序和查找错误。

但究竟是什么建立一个程序呢? 在VS我知道,当你制定一个计划,它产生的debug文件夹中的可执行文件。

什么任何硬核技术的定义就意味着要建立一个计划?

Answer 1:

这并不一定承担什么人类平均约“建设”,但据的MSBuild 2.0而言,在Microsoft.Common.targets代码描述它正是如此:

...
<!--
============================================================
                                    Build

The main build entry point.
============================================================
-->
<PropertyGroup>
    <BuildDependsOn>
        BeforeBuild;
        CoreBuild;
        AfterBuild
    </BuildDependsOn>
</PropertyGroup>
<Target
    Name="Build"
    Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
    DependsOnTargets="$(BuildDependsOn)"
    Outputs="$(TargetPath)"/>

<!--
============================================================
                                    BeforeBuild

Redefine this target in your project in order to run tasks just before Build
============================================================
-->
<Target Name="BeforeBuild"/>

<!--
============================================================
                                    AfterBuild

Redefine this target in your project in order to run tasks just after Build 
============================================================
-->
<Target Name="AfterBuild"/>

<!--
============================================================
                                    CoreBuild

The core build step calls each of the build targets.
============================================================
-->
<PropertyGroup>
    <CoreBuildDependsOn>
          BuildOnlySettings;
          PrepareForBuild;
          PreBuildEvent;
          UnmanagedUnregistration;
          ResolveReferences;
          PrepareResources;
          ResolveKeySource;
          Compile;
          GenerateSerializationAssemblies;
          CreateSatelliteAssemblies;
          GenerateManifests;
          GetTargetPath;
          PrepareForRun;
          UnmanagedRegistration;
          IncrementalClean;
          PostBuildEvent
    </CoreBuildDependsOn>
</PropertyGroup>
<Target
    Name="CoreBuild"
    DependsOnTargets="$(CoreBuildDependsOn)">

    <OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent" Condition="'$(RunPostBuildEvent)'=='Always' or '$(RunPostBuildEvent)'=='OnOutputUpdated'"/>
    <OnError ExecuteTargets="_CleanRecordFileWrites"/>

</Target>
...

这表明,“建设”的意思大致“编译让你从代码工件的可部署的结果,加上所有相关的辅助活动”。



Answer 2:

建设意味着很多事情很多人, 但通常是指开始由开发商制作的源文件,并用之类的东西都准备好部署安装包结束

“构建”可以包含很多东西:

  • 源文件汇编(用于支持独立/明确的编译步骤语言/环境)
  • 的目标代码连接(对于支持一个单独的/显式连接步骤语言/环境)
  • 分发包的生产,也称为“安装程序”
  • 嵌入源代码文件中的文件的生成,例如Doxygen的,的Javadoc
  • 自动化测试执行像单元测试,静态分析测试,性能测试
  • 报告告诉开发团队的许多警告和错误如何在生成过程中发生的代
  • 分发包的部署。 例如,构建能自动部署/发布Web应用程序的新版本(假设构建成功)。

“构建”可以做“手动”,或者它可以是自动化的,或两者的某种混合。 手动构建是需要建立的命令等,以由一个被执行的编译器一个构建。 自动化构建包了所有的个体构建工具为可以(最好)在单步运行大型建设计划,。



Answer 3:

这意味着将所述人类可读的源构件成机器可读的伪影的过程。



Answer 4:

许多项目涉及到大量的源文件。 原则上,可以手动编译通过本身的那些文件中的任一个 - 可使用编译器来该源文件编译成(临时)包含对象文件的机器代码。

在实践中,这是太繁琐手动编译每个源文件一次一个,更繁琐的手动跟踪它的源文件需要重新编译。 因此,我们通过运行自动构建程序构建整个项目一次 - 通常被称为“使”。 该方案经过源文件,通常存储在名为“Makefile的”又一个“源”文件的列表,并呼吁每一个编译器 - 的“制造”很多版本都足够聪明,只是重新编译已更改的文件所以需要重新编译。

虽然编译可以说是构建过程中最重要的部分,往往是一个“构建”运行大量的编译后的其他程序。 偶尔一个完整的构建将花费更多的时间比运行运行编译这些其他程序。

例如,很多人觉得方便有一个按钮不仅编译所有的源代码到最新版本,同时也提供一个标准的一系列测试( C2:一键测试 )。 所以makefile文件还列出任何需要的命令来运行这些测试,这成为构建过程的一部分。



文章来源: Programming Definitions: What exactly is 'Building'.