Ответ 1
Какой генератор?
Чтобы понять, что такое генератор, нам нужно сначала посмотреть, что такое система сборки. CMake не компилирует и не связывает какие-либо исходные файлы. Он использовал генератор для создания файлов конфигурации для системы сборки. Система сборки использует эти файлы для компиляции и связывания файлов исходного кода.
Так что же такое система сборки?
Система сборки - это широкий термин, объединяющий набор инструментов, используемых для общей компиляции и связывания исходного кода, но он также может включать вспомогательные инструменты, используемые в процессе сборки.
Например, в многоэтапной системе сборки один исполняемый файл может быть собран для использования в процессе сборки другой сборки.
В зависимости от цепочки инструментов, используемой в системе, CMake сгенерирует несколько файлов и папок, чтобы позволить создавать исходные файлы, на которые есть ссылки в CMakeLists.txt и которые поддерживают файлы .cmake.
Иногда на компьютере может быть установлено несколько систем сборки, например, для Windows у вас может быть система сборки Visual Studio и MinGW. CMake позволяет вам указать, для каких этих систем сборки создавать файлы конфигурации.
CMake включает в себя несколько генераторов Command-Line
, IDE
и Extra
.
Генераторы инструментов командной строки
Эти генераторы предназначены для инструментов сборки командной строки, таких как Make и Ninja. Выбранная цепочка инструментов должна быть настроена до создания системы сборки с помощью CMake.
Поддерживаются следующие (**):
- Borland Makefiles
- MSYS Makefiles
- MinGW Makefiles
- NMake Makefiles
- NMake Makefiles JOM
- Ниндзя
- Unix Makefiles
- Watcom WMake
IDE Build Tool Генераторы
Эти генераторы предназначены для интегрированных сред разработки, которые включают в себя собственный компилятор. Примерами являются Visual Studio и Xcode, которые изначально включают компилятор.
Поддерживаются следующие (**):
- Visual Studio 6
- Visual Studio 7
- Visual Studio 7.NET 2003
- Visual Studio 8 2005
- Visual Studio 9 2008
- Visual Studio 10 2010
- Visual Studio 11 2012
- Visual Studio 12 2013
- Visual Studio 14 2015
- Visual Studio 15 2017
- Visual Studio 16 2019
- Green Hills MULTI
- Xcode
Дополнительные генераторы
Это генераторы, которые создают конфигурацию для работы с альтернативным инструментом IDE и должны быть включены либо в генератор IDE, либо в генератор командной строки.
Поддерживаются следующие (**):
- CodeBlocks
- CodeLite
- Затмение CDT4
- KDevelop3 (не поддерживается после v3.10.3)
- Кейт
- Возвышенный текст 2
Если в моем проекте есть набор файлов C++, это входные файлы?
Да, они являются одними из входных файлов. Для системы сборки сборки у вас также есть MakeFile. Для Visual Studio у вас есть файл решения (.sln). В обеих системах требуются дополнительные файлы, которые CMake знает, как создать, учитывая правильный файл CMakeLists.txt.
Если я использую Linux, какая у меня система по умолчанию? Делать?
Как правило, да, но другие системы сборки могут быть настроены как Ninja.
Почему входные файлы должны быть записаны генератором, если они уже существуют?
Некоторые исходные файлы могут уже существовать, но CMake имеет возможность генерировать заголовочные и исходные файлы. Также, как упомянуто выше, есть файлы конфигурации, которые должны быть сгенерированы, которые зависят от исходных файлов, предоставленных в файле CMakeLists.txt.