До недавних пор не сталкивался серьёзно с CMake. Собирал, конфигурировал — да, но сам почти не писал. И тем более — сложных проектов с нетривиальной сборкой зависимостей. Посмотрел с десяток крупных проектов, таких как ROS, VTK, LLVM, Eigen и так далее, везде какой-то ад и израиль в коде: snake_case, sausage-case и CamelCase в одном файле, разбиение на модули от балды, переопределение стандартных функций и макросов, чтобы сэкономить пару строчек, трёхэтажные if-ы. И всё равно всё ломается. Например, есть опциональная зависимость
A, она зависит
B, но отключить можно только
А. Отключаешь А через
-DENABLE_FEATURE=OFF, в каком-то месте нет проверки, что B тоже должна быть отключена, и сборка ломается. Получается, что на собеседовании по С++ могут выдрочить за неправильное название переменной, но когда те же люди пишут конфигурацию сборки, то они резко тупеют и превращаются во вчерашних школьников?
P.S. Единственный проект, который выделяется на фоне всех остальных, это Qt. По нему действительно можно ориентироваться в плане написание конфигураций сборки. Видать за 6 версий разработчики намучились и таки сделали всё по уму