Компиляция проекта, состоящего из кусков, написанных на разных языках, происходит в несколько этапов: 3
- Обработка исходного кода препроцессором. 3 Препроцессор читает файл с исходным текстом и выдаёт результирующий файл. 1
- Компиляция в объектный код. 3 Содержащиеся в файле фрагменты программы преобразуются в эквивалентные, но записанные на языке ассемблера. 1
- Обработка ассемблером. 1 Он превращает файл с текстом программы на языке ассемблера в файл, содержащий представления команд процессора в виде чисел. 1 Результат работы ассемблера называется объектным модулем. 1
- Компоновка объектных модулей. 3 Для запуска программы нужно собрать вместе все объектные модули, из которых она состоит. 1 Это делает компоновщик. 1 Результатом его работы является готовый к запуску файл программы. 1
Также при компиляции проекта учитываются метаданные проекта — файлы, которые описывают, какие в проекте есть модули, какие исходники они включают, как они зависят друг от друга и от внешних библиотек, API и SDK. 2 В соответствии с этими метаданными происходит сборка проекта: одни исходники компилируются одними компиляторами, другие — другими. 2