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

StackOverflow https://stackoverflow.com/questions/1622506

Вопрос

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

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

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

Это было полезно?

Решение

Это не обязательно влияет на то, что люди подразумевают под "сборкой", но что касается 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>
...

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top