2009-10-25 2 views
19

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

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

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

ответ

3

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

3

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

37

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

«Билд» может содержать много вещей:

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

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

4

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

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

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

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