buildソリューション/プロジェクト/プログラムとはどういう意味ですか?私は自分の定義が正しいことを確認したいのです(会話するときに馬鹿のように聞こえないように)。 IDEでは、(間違っている場合は訂正してください)コンパイルソースコード/プログラミングコードをコンピューターで読み取り可能なマシンコードに変換できます。 debugプログラムを実行できます。これは基本的にプログラムをステップスルーし、エラーを探します。
しかし、buildingプログラムは正確に何をしますか? VSでは、プログラムをビルドすると、デバッグフォルダーに実行可能ファイルが生成されることを認識しています。
プログラムにとってbuildの意味についてのハードコアな技術定義はありますか?
これは、人間が「ビルド」について何を意味するかには必ずしも関係しませんが、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>
...
これは、「ビルド」が大まかに「コンパイルに加えて、コードアーティファクトからデプロイ可能な結果に至るすべての関連する補助イベント」を意味することを示唆しています。
構築は多くの人にとって多くのことを意味しますが、一般に、開発者によって作成されたソースファイルから始まり、展開の準備ができているインストールパッケージなどで終わることを意味します。
「ビルド」には多くのものを含めることができます。
「ビルド」は「手作業」で行うことも、自動化することも、2つのハイブリッドにすることもできます。手動ビルドは、コンパイラなどのビルドコマンドを1つずつ実行する必要があるビルドです。自動ビルドは、個々のビルドツールをすべてまとめて、(理想的には)単一のステップで実行できる大きなビルドプログラムにします。
これは、人間が読み取れるソースアーティファクトを機械が読み取れるアーティファクトに変換するプロセスを意味します。
多くのプロジェクトには、多くのソースファイルが含まれます。原則として、これらのファイルのいずれかを単独で手動でコンパイルできます。コンパイラを使用して、そのソースファイルをマシンコードを含む(一時的な)オブジェクトファイルにコンパイルします。
実際には、すべてのソースファイルを一度に1つずつ手動でコンパイルするのは非常に面倒であり、どのソースファイルを再コンパイルする必要があるかを手動で追跡するのはさらに面倒です。そのため、自動ビルドプログラム(通常は「make」と呼ばれます)を実行して、プロジェクト全体を一度にビルドします。そのプログラムは、多くの場合「makefile」という名前のさらに別の「ソース」ファイルに保存されているソースファイルのリストを調べ、それぞれのコンパイラを呼び出します。「make」の多くのバージョンは、変更されたファイルのみを再コンパイルするのに十分スマートですしたがって、再コンパイルする必要があります。
コンパイルは間違いなくビルドプロセスの最も重要な部分ですが、多くの場合、「ビルド」はコンパイラの後に他の多くのプログラムを実行します。場合によっては、完全なビルドでは、コンパイラーを実行するよりも、これらの他のプログラムの実行に多くの時間が費やされます。
たとえば、多くの人は、すべてのソースコードを最新バージョンにコンパイルするだけでなく、標準の一連のテスト( C2:ワンボタンテスト )を1つのボタンで実行すると便利だと感じています。したがって、makefileには、ビルドプロセスの一部となるこれらのテストを実行するために必要なコマンドもリストされます。