54
правки
Изменения
Нет описания правки
add_executable(test test.cpp)
Теперь запускаем (из консоли) в этой папке команду "cmake CMakeLists.txt" (аргументом можно передавать не только файл, но и папкудиректорию, в которой он лежит, тогда cmake найдет его сам). cmake возьмет этот файлик будет использовать переданный (или найденный) файл проекта (тот самый CMakeLists.txt), и, основываясь на нем, создаст в '''текущей''' директории будет создавать проект, а именно .Проект - это много-много файлови директорий, папочек и т.д. Нас из которых нас больше всего интересует сгенерированный Makefile (проверьте. Makefile - это файл, он тоже должен быть в папочке)нужный для утилиты make.В той же папке запускаем Именно она запускает компиляторы, линковщики и прочие радости. Запускаем make в '''каталоге сборки''' (аргументы такие же, как у cmake, т.е. можно сам makefileтам же, можно папку, в которой он лежит; без аргументов make ищет makefile в текущем каталогегде Вы запускали cmake).
В консоли вылезет примерно такой текст:
= We need to go deeper =
Поразбираемся с различными командами возможностями cmake.
=== Указание необходимой версии cmake ===
Как видите, использовать значение можно и внутри кавычек.
Переменные активно используются различными библиотеками - для установки флагов, параметров сборки/линковки и прочих вкусностей, об этом чуть-чуть попозже. Пример коше'гного проекта со списком сорцов в отдельной переменной: cmake_minimum_required(VERSION 2.6) set(SOURCES test.cpp lib1.cpp lib2.cpp) add_executable(test ${SOURCES}) === Устанавливаем команды компилятору === add_definitions(-std=c++11 -Wall) Компилятору при компиляции добавляются соответствующие опции.Кто не знает: "-std=c++11" включает в gcc поддержку стандарта c++11, "-Wall" говорит gcc выводить все предупреждения.Сказать флаги для с++ можно и через переменные: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") === Папка с хедерами === Допустим, Вы хотите, чтобы хедеры (файлики, подключаемые через #include) искались еще и в каталогах "headers/" и "more_headers/": include_directories("headers/" "more_headers/") Надеюсь, и это понятно.