Ответы:
«Сборка» - это довольно общий термин, и он может относиться ко всему, что необходимо для перехода от редактируемого исходного материала (исходный код, сценарии, файлы необработанных данных и т. Д.) К готовому программному продукту. Сборка может (и обычно имеет) несколько этапов, таких как предварительная обработка, компиляция, компоновка, преобразование файлов данных, запуск автоматических тестов, упаковка и т. Д.
«Компиляция» более специфична и почти всегда относится к процессу, который принимает исходный код в качестве входных данных и выводит что-то работоспособное, обычно машинный код для физической или виртуальной машины, или исходный код на другом языке.
Эти термины часто используются взаимозаменяемо, но я бы выделил их следующим образом:
Таким образом, компиляция действительно подмножество сборки.
Компиляция выполняется компилятором, сборка может быть более сложным процессом.
Например. в C ++ для создания проекта необходим препроцессор (предварительная обработка исходных файлов); компилятор (компиляция исходных файлов); компоновщик (объединение всего в исполняемый файл - скомпилированный код, значки, строки, другие ресурсы вместе)
Таким образом, обычно компиляция - это перевод кода, написанного на одном языке, на другой (например, машинный код).