Да, вы можете очень легко одновременно поддерживать и CMake, и Autotools, поскольку они не перекрываются (то есть файлы, которые вы используете для создания этих сред, отличаются, поэтому вы можете иметь оба типа файлов в вашемпроект в то же время).
Нет, вы не можете (легко) поддерживать голое изготовление и любую из вышеперечисленных систем одновременно.Ни Autotools, ни CMake на самом деле не являются инструментами для сборки.Они "генераторы инструментов сборки".Таким образом, вы не запускаете autotools или cmake, и в результате получается ваш собранный проект: вместо этого вы запускаете autotools или cmake, и они генерируют управляющие файлы для инструмента сборки.Затем вы запускаете инструмент сборки, и в результате получается ваш собранный проект.
Autotools генерирует make-файлы, а cmake генерирует много разных типов управляющих файлов, где make-файлы являются одними из наиболее распространенных.
Итак, вы не можете иметь свой собственный make-файл в своем проекте, потому что он будет конфликтовать с make-файлом, сгенерированным autotools или cmake.
Конечно, вы можете делать такие вещи, как помещать свои собственные make-файлы в подкаталог, а затем вызыватьсделать с аргументом вроде make -f rawmake/makefile
или что-то в этом роде.Но нет удобного способа поддержать их всех.
На самом деле, я бы никогда не выбрал поддержку более чем одного из перечисленных выше вариантов.Вы потратите много времени на то, чтобы сделать это правильно, и каждый раз, когда вам нужно изменить среду сборки, это в два-три раза больше работы.Люди будут находить проблемы с тем из них, который вы будете использовать реже.Это огромная проблема из-за небольшой выгоды.
То, что вы выберете, во многом зависит от вашего проекта.Если ваш проект выполняется только (или почти исключительно) в системах типа POSIX, вы хотите, чтобы он был максимально переносимым даже для гораздо более старых систем, даже если он использует много специальных функций ОС, или вы хотите, чтобы параметры его установки и сборки были чрезвычайногибкий (прямая поддержка кросс-компиляции и т. д.), тогда autotools - хороший выбор.Если ваш проект работает на множестве разных типов ОС (в частности, на Windows), и вы хотите, чтобы люди могли легко разрабатывать с их выбором IDE (Visual Studio, Xcode и т. Д.), Тогда cmake - хороший выбор.
Если ваша программа проста в сборке и не нуждается в какой-либо конфигурации или настройке, или вы уже знакомы с make-файлами и не хотите изучать совершенно новый язык только для сборок, тогда необработанные make-файлы могут быть хорошим выбором.