Что такое генератор CMake?

Я прочитал документацию.

Он говорит:

A CMake Generator is responsible for writing the input files for a native build system. 

что это значит?

Если у меня есть набор файлов c++ в моем проекте, это входные файлы?

Если я использую Linux, какова моя собственная система сборки по умолчанию? Make?

почему входные файлы должны быть written генератором, если они уже существуют?

3 ответов


что такое генератор?

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

Итак, что такое система сборки?

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

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

В зависимости от цепочки инструментов, используемых в системе, 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

эти генераторы предназначены для интегрированных сред разработки, которые включают в себя собственный компилятор. Примерами являются Visual Studio и Xcode, которые изначально включают компилятор.

поддерживаются следующие(**):

  • Visual Studio 6
  • Visual Studio 7
  • Visual Studio 7 .NET 2003
  • Visual Studio 8 2005
  • визуальный Studio 9 2008
  • Visual Studio 10 2010
  • Visual Studio 11 2012
  • Visual Studio 12 2013
  • Visual Studio 14 2015
  • Visual Studio 15 2017
  • зеленые холмы MULTI
  • в Xcode

Дополнительные Генераторы

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

поддерживаются следующие(**):

  • CodeBlocks
  • CodeLite
  • затмение CDT4
  • KDevelop3
  • Кейт
  • Возвышенный Текст 2

Если у меня есть набор файлов c++ в моем проекте, это входные файлы?

Да, они некоторые входных файлов. Для системы сборки make у вас также есть MakeFile. Для Визуального Студии у вас есть файл решения (.ФСЛ.) С обеих систем есть дополнительные файлы, необходимые, Что CMake знает, как создать данный правильный CMakeLists.txt-файл.

Если я использую Linux, какова моя собственная система сборки по умолчанию? Сделать?

как правило, да, но другие системы сборки могут быть настроены как Ninja.

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

некоторые исходные файлы могут уже существовать, но CMake имеет возможность генерировать заголовочные и исходные файлы. Кроме того, как упоминалось выше, существуют файлы конфигурации, которые должны быть созданы в зависимости от исходных файлов, предоставленных в CMakeLists.txt-файл.

** по документация для CMake версии 3.9


генератор CMake отвечает за запись входных файлов для собственная система сборки.

означает, что CMake готовит сценарии сборки для собственной системы сборки, когда генератор не указан. В Linux система сборки по умолчанию -Make и его входной файл makefiles, которые затем интерпретируются и сборка выполняется соответственно. До первого выполнения сценариев сборки CMake не существует.

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


насколько я знаю, стандартная собственная система сборки в Unix - это " GNU make (gmake)", известная как "make". Ребята из google также выпустили другой инструмент под названием "Ninja".