54
правки
Изменения
Нет описания правки
// Тут скоро будет туториал по CMake.
= Что это и зачем нужно =
CMake — кроссплатформенная автоматизированная система сборки проектов.
Непосредственно сборкой она не занимается, а только генерирует Makefile, который потом будет выполнен утилитой make.
CMake может проверять наличие необходимых библиотек и подключать их, собирать проекты под разными компиляторами и операционными системами. Т.е. у вас есть куча кода и файлик, содержащий информацию для cmake, и чтобы скомпилить
это дело где-нибудь еще, вам нужно просто запустить там cmake, который сделает всё сам. Удобно, полезно, просто.
<span style="color:#a0a0a0">Дисклеймер: Никита все еще считает, что cmake не нужен, но Никита извращенец и просто дурак.</span>
= Старт =
Предполагается, что найти и скачать сам cmake ты, %username%, в состоянии.
Предположим, у Вас есть исходничек "test.cpp".
Для начала нужно создать файлик для cmake, который обычно называют "CMakeLists.txt", и написать туда вот это:
add_executable(test test.cpp)
Теперь запускаем (из консоли) в этой папке команду "cmake CMakeLists.txt" (аргументом можно передавать не только файл, но и папку, в которой он лежит, тогда cmake найдет его сам).
cmake возьмет этот файлик и, основываясь на нем, создаст проект, а именно много-много файлов, папочек и т.д.
Нас больше всего интересует сгенерированный Makefile (проверьте, он тоже должен быть в папочке).
В той же папке запускаем make (аргументы такие же, как у cmake, т.е. можно сам makefile, можно папку, в которой он лежит; без аргументов make ищет makefile в текущем каталоге).
В консоли вылезет примерно такой текст:
Scanning dependencies of target test
[100%] Building CXX object CMakeFiles/test.dir/test.cpp.o
Linking CXX executable test
[100%] Built target test
А у Вас в папочке появится исполняемый файл "test". Запустите, убедитесь, что это действительно то, что ожидается от компилляции файла "test.cpp".
= We need to go deeper =
Поразбираемся с различными командами cmake.
=== Указание необходимой версии cmake ===
cmake_minimum_required(VERSION 2.6)
Если используемая версия cmake меньше 2.6, он не захочет работать. Писать эту команду всегда - хороший стиль.
=== Название проекта ===
project(visualization)
Тут все понятно. Тоже хороший стиль.
=== Переменные ===
В cmake можно создавать текстовые переменные. Команда
set(VARIABLE The variable's value)
запишет в переменную "VARIABLE" значение "The variable's value".
Чтобы где-либо использовать значение этой переменной, нужно написать ${VARIABLES}.
Чтобы добавить к переменной некий текст, можно сделать так:
set(VARIABLE "${VARIABLES} new text")
Как видите, использовать значение можно и внутри кавычек.
Переменные активно используются различными библиотеками - для установки флагов, параметров сборки/линковки и прочих вкусностей.