Подтвердить что ты не робот

Определения программирования: что такое "Строительство".

Что означает построить решение/проект/программу? Я хочу убедиться, что мои определения правильны (поэтому я не говорю, что идиот при разговоре). В IDE вы можете (исправить меня, если я ошибаюсь) компилировать исходный код/​​код программирования в машиночитаемый машинный код. Вы можете отладить программу, которая в основном выполняет работу над программой и ищет ошибки.

Но что именно делает здание программа? В VS я знаю, что когда вы создаете программу, она создает исполняемый файл в папке отладки.

Любые жесткие технические определения того, что означает построить программу?

4b9b3361

Ответ 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>
...

который предполагает, что "build" означает "грубо" компиляцию плюс все связанные вспомогательные события, которые вы получаете от артефактов кода к разворачиваемому результату ".

Ответ 2

Построение означает много вещей для многих людей, но в общем случае означает запуск с исходных файлов, созданных разработчиками, и заканчивая такими вещами, как установочные пакеты, готовые к развертыванию.

"Строка" может содержать много вещей:

  • Компиляция исходных файлов (для языков/сред, поддерживающих отдельный/явный шаг компиляции)
  • Связывание объектного кода (для языков/сред, поддерживающих отдельный/явный шаг привязки)
  • Производство пакетов распространения, также называемых "установщиками"
  • Генерация документации, встроенной в файлы исходного кода, например. Doxygen, Javadoc
  • Выполнение автоматических тестов, таких как модульные тесты, тесты статического анализа и тесты производительности.
  • Генерация отчетов, сообщающих команде разработчиков, сколько предупреждений и ошибок произошло во время сборки
  • Развертывание пакетов распространения. Например, сборка может автоматически развертывать/публиковать новую версию веб-приложения (предполагая, что сборка выполнена успешно).

"Сборка" может быть выполнена "вручную" или может быть автоматизирована или какой-либо гибрид двух. Ручная сборка - это сборка, которая требует, чтобы команды сборки, такие как компиляторы, выполнялись один за другим. Автоматизированные сборки объединяют все отдельные инструменты сборки в большую программу сборки, которая может (в идеале) запускаться за один шаг.

Ответ 3

Это означает процесс преобразования удобочитаемых исходных артефактов в машиночитаемые артефакты.

Ответ 4

Во многих проектах задействовано множество исходных файлов. В принципе, вы можете вручную скомпилировать любой из этих файлов самостоятельно - вы используете компилятор для компиляции этого исходного файла в (временный) объектный файл, содержащий машинный код.

На практике слишком сложно вручную компилировать каждый исходный файл по одному, и еще более утомительно вручную отслеживать, какие исходные файлы необходимо перекомпилировать. Таким образом, мы строим весь проект сразу, запустив программу автоматической сборки - обычно называемую "make". Эта программа проходит через список исходных файлов, часто хранится в еще одном "исходном" файле с именем "makefile" и вызывает компилятор на каждом из них - многие версии "make" достаточно умны, чтобы перекомпилировать только те файлы, которые изменились и поэтому их необходимо перекомпилировать.

Хотя компиляция, возможно, является самой важной частью процесса сборки, часто "сборка" запускает множество других программ после компилятора. Иногда полная сборка будет тратить больше времени на выполнение этих других программ, чем запуск компилятора.

Например, многим людям удобно иметь одну кнопку, которая не только компилирует весь исходный код в последнюю версию, но также запускает стандартную серию тестов (C2: тестирование одной кнопки). Таким образом, makefile также перечисляет все команды, необходимые для запуска этих тестов, которые становятся частью процесса сборки.