Cmake gui как пользоваться
Перейти к содержимому

Cmake gui как пользоваться

Что это и зачем нужно [ править ]

CMake — кроссплатформенная автоматизированная система сборки проектов. Непосредственно сборкой она не занимается, а только генерирует Makefile, который потом будет выполнен утилитой make.

CMake может проверять наличие необходимых библиотек и подключать их, собирать проекты под разными компиляторами и операционными системами. Т.е. у вас есть куча кода и файлик, содержащий информацию для cmake, и чтобы скомпилить это дело где-нибудь еще, вам нужно просто запустить там cmake, который сделает всё сам. Удобно, полезно, просто.

Краткое описание [ править ]

Если нет желания/времени/сил читать весь туториал и Вы используете какой-нибудь QtCreator (или любая другая IDE, умеющая работать с cmake), то:

  • Создайте в IDE проект под cmake
  • Найдите в папке с проектом CMakeFiles.txt
  • Пробегитесь глазами по туториалу, соотнося его с вашим CMakeFiles.txt

Про подключение библиотек рекомендуется все-таки прочитать целиком.

Старт [ править ]

Предполагается, что найти и скачать сам cmake ты, %username%, в состоянии. //а если нет?

Предположим, у Вас есть исходничек «test.cpp» (// а если нет?)(А если нет, то CMake тебе трогать рано). Для начала нужно создать файлик для cmake, который обычно называют «CMakeLists.txt», и написать туда вот это:

Теперь запускаем (из консоли) в этой папке команду «cmake CMakeLists.txt» (аргументом можно передавать не только файл, но и директорию, в которой он лежит, тогда cmake найдет его сам).

cmake будет использовать переданный (или найденный) файл проекта (тот самый CMakeLists.txt), и в текущей директории будет создавать проект. Проект — это много-много файлов и директорий (примечание: поэтому лучше запускать cmake из другой директории, чтобы можно было, например, быстро удалить все бинарники), из которых нас больше всего интересует Makefile.

Makefile — это файл, нужный для утилиты make. Именно она запускает компиляторы, линковщики и прочие радости. Запускаем make в каталоге сборки (т.е. там же, где Вы запускали cmake). В консоли вылезет примерно такой текст:

А у Вас в папочке появится исполняемый файл «test». Запустите, убедитесь, что это действительно то, что ожидается от компиляции файла «test.cpp».

Подробное описание [ править ]

Поразбираемся с различными возможностями cmake.

Указание необходимой версии cmake [ править ]

Указывайте высокую минимальную версию CMake. Если используемая версия cmake меньше 2.6, он не захочет работать. Писать эту команду всегда — хороший стиль (cmake будет пыхтеть и обижаться, если вы не укажете версию, но собирать всё равно всё будет).

Название проекта [ править ]

Указывает, что этот cmake-файл является корневым для некоторого проекта. С проектами связаны определенные переменные и поведение cmake (читайте документацию).

Переменные [ править ]

В cmake можно создавать текстовые переменные. Команда

запишет в переменную «VARIABLE» значение «The variable’s value». Чтобы где-либо использовать значение этой переменной, нужно написать $.

Чтобы добавить к переменной некий текст, можно сделать так:

Как видите, использовать значение можно и внутри кавычек. Переменные активно используются различными библиотеками — для установки флагов, параметров сборки/линковки и прочих вкусностей, об этом чуть-чуть попозже.

Пример коше’гного проекта со списком сорцов в отдельной переменной:

Устанавливаем команды компилятору [ править ]

Эта команда используется для установки дефайнов, которыe можно проверить в коде через, например, #ifdef SOME_IMPORTANT_DEFINITION.

Эта команда добавит к флагам, используемым при сборке c++-кода, флаги -std=c++11 и -Wall.

Кто не знает: «-std=c++11» включает в gcc поддержку стандарта c++11, «-Wall» говорит gcc выводить все предупреждения (очень советую, помогает отловить много глупых багов и писать аккуратный код).

Если ваша версия GCC меньше, чем 4.7.0, вместо -std=c++11 нужно использовать -std=c++0x.

В GCC 4.8.0 появился флаг -std=c++1y, в котором начинают реализовывать фичи следующего стандарта.

Папка с хедерами [ править ]

Допустим, Вы хотите, чтобы хедеры (файлики, подключаемые через #include) искались еще и в каталогах «headers/» и «more_headers/»:

Надеюсь, и это понятно.

Самое важное — подключение библиотек [ править ]

Научимся искать и подключать библиотеки при помощи cmake на примере Boost. Для начала установим переменные для буста:

Первое — мы не хотим, чтобы буст подключался к нам статически (т.е. хотим динамическую линковку). Если ты, %username%, не знаешь, что это, пока просто забей и используй этот флаг так, как написано. Но в ближайшее время узнай, о чем речь. Второй флаг разрешает бусту внутри своих магических реализаций использовать треды для распараллеливания и прочих радостей.

Итак, мы установили флаги. Давайте найдем буст!

Допустим, нам нужны компоненты буста под названием chrono (библиотека для работы со временем) и filesystem (библиотека для работы с файловой системой):

Win, будут искаться только нужные библиотеки, и их расположение будет записано в переменную Boost_LIBRARIES.

Опция «REQUIRED» говорит о том, что библиотека необходима проекту. Без нее cmake решит, что отсутствие данной библиотеки — не так уж и страшно, и будет собирать дальше.

Добавим директории с хедерами буста для поиска в них хедеров:

Итак, осталось найденные библиотеки подключить к исполняемому файлу.

В качестве библиотек нужно указать пути к необходимым собранным библиотекам. cmake нашел указанные нами библиотеки и записал в переменную, чем мы и пользуемся.

Заметим, что эту команду нужно вызывать после того, как создан target сборки (через add_executable).

Пример хорошего CMakeLists.txt и где он будет лежать [ править ]

Итак, полный пример использования всего этого. У нас есть некая директория (отныне считаем ее «/sources»), и в ней лежат исходники

В корне «/» лежит файл «/CMakeLists.txt»:

Если Вам что-то в нём не понятно — перечитайте соответствующую информацию выше.

Создаем директорию «/build» (не «/sources/build»), переходим в нее, запускаем в ней «cmake ..». «..» — метка родительской директории. cmake возьмет из нее наш CMakeLists.txt и по нему создаст проект в папке «/build». Чтобы проект собрать, запускаем «make» в той же папке «/build».

Таким образом, в корне у нас есть:

  • CMakeLists.txt
  • директория с исходниками
  • каталог сборки

Все разделено, автоматизировано и удобно.

Как создать библиотеку в поддиректории и слинковать ее с основной программой [ править ]

Пусть в ./ лежит основной проект, а в ./subdir мы хотим сделать либу, а в ./build построить проект.

Теперь можно в файлах основного проекта делать #include «lib.h» (см. документацию по target_include_directories).

В ./build запускаем «cmake .. && make» и получаем собранный проект.

Как использовать CMake в связке с QtCreator [ править ]

Интеграция с cmake у QtCreator не очень тесная, тем не менее, работать с ним можно.

Создаем новый проект без использования Qt, выбираем «Проект на С++ с использованием CMake». Создастся дефолтный файл сборки, который просто добавляет все исходники в директории проекта и компилирует их в один бинарник.

О CMake

Возможно, вы слышали о нескольких инструментах Make, таких как GNU Make, qmake QT, MS nmake от Microsoft, Make BSD (pmake), Makepp и так далее. Эти инструменты Make следуют различным спецификациям и стандартам, и формат исполняемого ими файла Makefile сильно различается. Это создает серьезную проблему: если программное обеспечение хочет кросс-платформенное, оно должно гарантировать, что оно может быть скомпилировано на разных платформах. Если вы используете вышеупомянутый инструмент Make, вы должны написать Makefile для каждого стандарта, что будет сумасшедшей работой.

CMake — это инструмент, разработанный для решения вышеуказанной проблемы: сначала он позволяет разработчикам написать независимый от платформы файл CMakeList.txt для настройки всего процесса компиляции, а затем генерирует требуемый локализованный Makefile и файл проекта в соответствии с платформой целевого пользователя. Например, Unix Makefile или Windows Visual Project. Так что «Пиши один раз, беги везде».

Используйте CMake на Windows

Также очень удобно использовать CMake в Windows.В дополнение к традиционному методу командной строки использования CMake, существует также простая программа с графическим интерфейсом cmake-gui.exe для использования CMake.

Установить CMake

Установить CMake на Windows легко, идиhttps://cmake.org/ Загрузите последний установочный пакет CMake выше. Во время установки вы также можете выбрать, добавлять ли CMake в PATH системы, как показано на следующем рисунке:

Для удобства CMake можно добавить в системный PATH.

Использование CMake GUI

После установки CMake будет создан ярлык. Нажмите Run, чтобы запустить CMake-gui.exe. Это программа с графическим интерфейсом CMake, как показано на следующем рисунке:

Поле редактирования исходного кода — это путь, в который вводится код. Этот путь может найти файл CMakeLists.txt.

Окно редактирования сборки двоичных файлов представляет собой каталог промежуточных файлов и конечных двоичных файлов, которые компилируются и выводятся.

Поскольку в конечном итоге CMake генерирует соответствующий файл проекта VS в Windows через файл CMakeLists.txt, различные версии VS также влияют на окончательный файл проекта VS, поэтому в диалоговом окне настройки необходимо выбрать инструмент компиляции кода, как показано на рисунке:

Ниже в качестве примера используется код тестового проекта Google для использования CMake-gui, введите путь, соответствующий тесту Google, и нажмите кнопку «Создать», чтобы создать компиляцию в каталоге E: / googletest / googletest / build. Файлы проекта:


Откройте файл gtest.sln с помощью vs, и вы можете скомпилировать тестовый код Google.

Использование командной строки CMake

Использование командной строки в CMake более сложное, чем в GUI, но оно более мощное и заслуживает изучения. Ниже приведен метод вызова командной строки CMake:

Генерация скомпилированных файлов проекта

cmake <CMakeLists.txt_Path> Это для создания файла проекта, который может быть скомпилирован. Где находится каталог, который работал в то время, и какой каталог является сгенерированным скомпилированным файлом проекта. Например, файл CMakeLists.txt находится в каталоге f: cmake, а когда вы запускаете cmake в каталоге f: cmakebuild, сгенерированный файл проекта компиляции находится в каталоге f: cmakebuild. Вы также можете добавить значения переменных через -D при создании скомпилированного файла проекта. Например, содержимое CMakeLists.txt выглядит следующим образом:

Мы можем установить значение EXECUTABLE_OUTPUT_PATH путем выбора -D, который также является выходным каталогом скомпилированного файла:

Таким образом, мы передали новое значение EXECUTABLE_OUTPUT_PATH в сценарий компиляции CMakeLists.txt.

Скомпилируйте проект

В дополнение к генерации файлов проекта компиляции, CMake может также вызвать проект системы компиляции для компиляции проекта, например:

По умолчанию компиляция выполняется в режиме отладки, и ее также можно передать — после передачи параметра MSBUILD в управление:

Режим командной строки

CMake имеет режим командной строки -E, который предоставляет некоторые часто используемые функции, такие как копирование файлов, создание каталогов, чтение и запись реестра, чтение и запись переменных среды, вычисление значения md5 и так далее. Скрипт может вызывать эти функции.

Написать CMakeLists.txt

Создать исполняемую программу

Сначала начните с создания простейшей исполняемой программы. Содержимое CMakeLists.txt выглядит следующим образом:

Первая строка — это минимальная версия, необходимая для cmake. В настоящее время это ВЕРСИЯ 2.6, которая, как правило, не нуждается в модификации.

4 указывают, что мы создали проект с именем LearnCMake, соответствующий LearnCMake.sln. Функция проекта означает создание проекта. В то же время были сгенерированы 4 переменные:

Строка 5 означает добавление исполняемого программного проекта с именем FirstExecutable, исходный код которого — hello_world.cpp. Вот полное использование add_executable:

По умолчанию создается консольный проект, плюс WIN32 указывает, что проект win32 создан следующим образом:

Позади кода проекта, вы можете добавить несколько файлов кода, разделенных пробелами.

Создать проект библиотеки

Создание проекта библиотеки аналогично созданию проекта исполняемой программы. Создание проекта библиотеки использует функцию add_library. Следующий пример:

Использование add_library выглядит следующим образом:

По умолчанию используется статическая библиотека, и вы также можете явно указать, является ли библиотека статической библиотекой, динамической библиотекой или модулем. Кроме того, BUILD_SHARED_LIBS также может контролировать, в какую библиотеку компилируется.

target_link_libraries используется для связывания библиотек, используется следующим образом:

установить установить переменную

Add_library и add_executable могут добавлять несколько исходных файлов следующим образом:

Мы можем заменить app_util.h app_util.cpp, определив переменную AppUtilSrc следующим образом:

Эффект эквивалентен вышеуказанному. Вы также можете накапливать значения:

Итак, AppUtilSrcs представляет 3 файла.

Установить режим компиляции

Установите режим компиляции mt:

Установите режим компиляции md:

По умолчанию используется многобайтовый режим, установленный в режим Unicode:

Кроме того, add_definitions может также установить другие параметры.

Добавить другие CMakeLists.txt

Если цель в CMakeLists.txt должна быть связана с целями в другом CMakeLists.txt, вы можете использовать add_subdirectory. Давайте возьмем библиотеку googletest в качестве примера:

Контроль кода

Если вы хотите добавить все исходные файлы из каталога ./pbase/src в проект, вы можете использовать aux_source_directory, чтобы добавить исходные файлы из каталога в переменную, и позже вы можете использовать код, представленный этой переменной, например:

Добавьте заголовочный файл, включающий каталог:

Но файлы в include_directories не будут отражены в первом проекте Visual Studio, а aux_source_directory будет только добавлять исходные файлы и игнорировать файлы заголовков. Если проект Visual Studio, который вы хотите сохранить, также содержит файлы заголовков, вы можете сделать это:

Если вы хотите пережить фильтр в visual studio, вы можете использовать source_group:

Getting Started with CMake

CMake (https://cmake.org/) is an open-source, cross-platform family of tools designed to build, test and package software.

In this tutorial we will guide you through the creation of your first CMake makefiles.

Prerequisites

Installation

Windows

The CMake downloads page has several options to install CMake on Windows. The Windows Installer packages (MSI) are probably the easiest way to get started.

The Windows Installer package will install CMake in C:\Program Files\CMake (unless you chose a different location). In C:\Program Files\CMake\bin you will find the main executable, cmake.exe , but also the CMake GUI, cmake-gui.exe .

A simple Hello World application

We start with a simple example which shows how CMake can generate build files for a simple console application. We will run this example on Windows and Ubuntu. The full example is available from our GitHub repository: CMakeTutorials/HelloWorld.

Our goal in this example is to create makefiles to build our HelloWorld application. This application contains a single source file, main.cpp , which is shown below. It simply has a main function that prints «Hello World!» on the console.

The Hello World makefile

CMake makefiles are named «CMakeLists.txt». We created the following CMakeLists.txt file to build our Hello World application.

The contents are fairly self-explanatory.

  • The cmake_minimum_required directive indicates the minimum CMake version that is needed to execute this makefile (we probably do not need 3.7.2 in our case but I simply used the version that I have installed).
  • The project directive sets the name of our project.
  • The add_executable directive adds an executable target called «HelloWorld» to be built from the source files listed (the single source file «main.cpp» in this case).

We now have everything we need to start building our project. We will show the procedure on Windows and Ubuntu.

Running CMake

There are 2 ways to run CMake:

  • From the command line using the cmake executable.
  • With the CMake GUI using the cmake-gui executable.

We will present both options in the following pages.

Creating a Visual Studio project from the command line

Let’s now use CMake to execute the CMakeLists.txt file. This section assumes that «cmake.exe» is in your path.

Getting a Visual Studio command prompt

When using the command line it is recommended to use the developer prompts provided by Visual Studio. This is to make sure all the required environment variables are set correctly. This topic is covered in the following MSDN article: Building on the Command Line.

Choosing the version of Visual Studio

On Windows there is a large choice of compilers including different versions of Visual Studio. CMake is able to generate makefiles for several of them. While it is possible to invoke CMake without specifying the specific compiler to target, this will result in CMake making the decision for you which can lead to surprising results. In particular 32 bit builds will be the default for Visual Studio and that may not be what you want.

To get a list of all the compilers supported you can run cmake -help . You should see something similar to the output below. I have only listed the Visual Studio entries as the complete list is quite long. Note that this gives you the list of generators supported by CMake on your platform but generating the makefiles will actually only work if the selected compiler is actually installed on your machine.

You pass in the desired generator by using the -G option e.g. cmake . -G «Visual Studio 15 2017 Win64» .

Generating the project

Now that we have highlighted two potential issues to be aware of we are ready to generate the project.

It is recommended to create a build directory and to execute cmake in that directory rather than in the same directory as the one where CMakeLists.txt resides. This is because CMake generate several files that are best kept separate from the actual source code.

In my case I created a subdirectory called build and I will build from there. I also have Visual Studio 14 2015 installed and I prefer to build a 64-bit executable. I will therefore execute the following command: cmake .. -G «Visual Studio 14 2015 Win64» .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *