Как известно, очень сложно получить любую полезную информацию о CMake в качестве новичка. До сих пор я видел несколько руководств о том, как создать какой-то очень простой проект или другой. Тем не менее, ни одна из них не объясняет рассуждения о том, что показано в них, всегда оставляя много отверстий для заполнения.
Что означает вызов CMake на CMakeLists? Должен ли он быть вызван один раз для дерева сборки или что? Как использовать разные настройки для каждой сборки, если все они используют одни и те же CMakeLists из одного источника? Почему каждый подкаталог нуждается в собственных CMakeLists? Имеет ли смысл использовать CMake в CMakeLists, отличном от того, который находится в корне проекта? Если да, то в каких случаях? Какая разница между указанием того, как создать исполняемый файл или библиотеку из CMakeLists в их собственной подкаталоге, а не делать это в CMakeLists в корне всех источников? Могу ли я создать проект для Eclipse, а другой для Visual Studio, просто изменив параметр -G при вызове CMake? Это даже то, как оно используется?
Ни одно из учебных пособий, страниц документации или вопросов/ответов, которые я видел до сих пор, не дает никакой полезной информации о том, как использовать CMake. Примеры просто не являются исчерпывающими. Независимо от того, какие учебные пособия я читаю, я чувствую, что мне не хватает чего-то важного.
Есть много вопросов, задаваемых новичками CMake, такими как я, которые не спрашивают об этом явно, но это делает очевидным тот факт, что, как и newbs, они понятия не имеют, как бороться с CMake или что с ним делать, поэтому даже хотя такой вопрос может показаться слишком широким, чтобы его можно было разрешить, я думаю, что стоит оставить его и ответить на него.