У меня есть проект CMake. Это кроссплатформенный проект, разработанный командой разработчиков. Visual studio и другие файлы make находятся внутри системы контроля версий для выпуска библиотеки и внешних разработчиков. Каждый раз, когда файл добавляется, нам нужно перекомпилировать все файлы проекта для всех платформ. Как заставить CMake генерировать новые файлы проекта для всех систем одновременно (если это возможно изнутри CMakeLists, а не в качестве аргументов командной строки)?
Я думаю, что это не имеет смысла, чтобы это было возможно в пределах CMakeLists. CMake — генератор make-файлов. Все в cmakelists настраивает make-файл, и его также можно использовать для создания файлов проекта. Если бы cmakelists мог также запросить создание другого типа make-файла … он бы отличался от любой другой команды в cmakelists тем, что он не описывает текущий выбранный make-файл.
На вашем месте я бы просто создал скрипт оболочки или простой make-файл, отдельный от CMake, который перестраивает каждый из файлов проекта, вызывая cmake из командной строки с соответствующими параметрами.
Является ли цель версионных CMake созданных скриптов сборки, чтобы не заставлять разработчиков устанавливать CMake?
В любом случае: лучше всего использовать правильный инструмент для правильной работы. CMake предназначен для создания файлов сборки и небольшого сценария, необходимого для этого. Используйте среду сценариев (bash, cmd.exe) для запуска CMake по мере необходимости для всех ваших платформ.
Это сохраняет файлы CMake чистыми (и читаемыми, сценарии CMake трудно читаемыми) и обеспечивает четкое разделение проблем.