Совет №5: включите, наконец, C++17 или C++14!
В последние годы стандарт C++ обновляется часто: мы получили потрясающие изменения в C++11, C++14, C++17. Старайтесь по возможности отказаться от старых компиляторов. Например, для Linux ничто не мешает установить последнюю версию Clang и libc++ и начать собирать все проекты со статической компоновкой C++ runtime.
Лучший способ включить C++17 без игры с флагами компиляции — явно сказать CMake, что он вам нужен.
С помощью вы можете требовать не C++17 или C++14, а определённых фич со стороны компилятора. Полный список известных CMake фич компиляторов можно посмотреть в документации.
Coverage
Подготовка
Начало конфигурации. Как правило, его трогать не надо.
if (BUILD_COVERAGE) # Если активна опция сборки с покрытием set(ENABLE_COVERAGE ON CACHE BOOL "Enable coverage build." FORCE) # Установка значения переменной ENABLE_COVERAGE list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # Дополнение возможных местоположений конфигурационных cmake файлов find_package(codecov) # Нахождение пакета (ожидается существование файла cmake/FindCodecov.cmake)
Тело
Далее прописываются цели, которые будут проанализированы на процент покрытия.
add_coverage(my_awesome_and_very_interesting_target) add_coverage(tests)
Заключение
Конец конфигурации. Как правило, не надо трогать.
list(APPEND LCOV_REMOVE_PATTERNS "'${PROJECT_SOURCE_DIR}/tests/*'") # Удаление файлов с тестами из анализа coverage_evaluate() # Вызов анализатора endif ()
Изучаем дистрибутив LLVM
Язык LLVM-IR
LLVM-IR — это промежуточный язык компиляторов, использующих библиотеки LLVM, именно с ним работают ключевые подсистемы LLVM. Язык поддерживает:
- инструкции, близкие к ассемблерным
- функции с параметрами и возвращаемым значением и их атрибуты
- структуры и массивы
- примитивные типы, например, целые числа от i1 (1-битное) до i64 (64-битное)
- в присваивании участвуют не переменные, а регистры — считается, что в LLVM бесконечно много регистров
- имена регистров локальные для функции, обычно генератор кода генерирует имена с помощью возрастающего ряда чисел
- присваивать регистр может только одна инструкция в пределах функции, для присваивания в цикле потребуется снова прыгнуть на эту инструкцию
В языке нет ни выражений, ни ООП, поскольку из LLVM-IR без излишних преобразований генерируется машинный код. Оптимизаторы кода в составе LLVM работают именно с LLVM-IR.
Пример Kaleidoscope
В состав дистрибутива LLVM включён пример Kaleidoscope (см. каталоги и проекты Kaleidoscope, Kaleidoscope-Ch2, Kaleidoscope-Ch3 и так далее). Для этих же примеров есть актуальные статьи на английском языке: llvm.org/docs/tutorial.
Пример реализует полноценный компилятор с кодогенерацией через LLVM. Особенности примера:
- фронтенд компилятора сильно упрощён, лексер и парсер написаны вручную
- для простоты примера используются глобальные переменные, от которых легко избавиться средствами ООП
- бекенд компилятора построен на библиотеках LLVM, для генерации и обработки промежуточного кода использует API библиотек LLVM
- есть поддержка выражений (включая if-выражение, эквивалентное тернарному оператору)
- есть поддержка инструкции for
- есть поддержка вызова внешних функций, написанных на языке C
- показан полный цикл кодогенерации, включая генерацию отладочной информации
Утилита llc
Утилита llc получает на вход LLVM-IR код и создаёт машинный код. Благодаря этому она служит прекрасным примером для создания финальной стадии бекенда: генератора машинного кода.
- код прост и понятен, и не содержит внутренней логики обработки данных
- в своём проекте алгоритм можно упростить ещё сильнее, убрав обработку ненужных вашему компилятору опций командной строки
- исходный код незначительно меняется от версии к версии в связи с изменениями в LLVM API
Компиляция из C/C++ в LLVM-IR
Компилятор clang способен компилировать из C/C++ в текстовое представление LLVM-IR, что позволяет исследовать способы генерации кода из различных высокоуровневых конструкций. По умолчанию clang компилирует без оптимизаций, то есть сгенерированный при обходе AST код не искажается проходами оптимизатора.
Допустим, есть файл main.cpp:
Команда для компиляции:
На выходе создаётся файл main.ll с текстовым представлением LLVM-IR:
Настройка и сборка
Visual Studio предоставляет раскрывающиеся списки для целевых систем, настройки предустановок и сборки предустановок при включенной интеграции :
Выбор целевой системы
В раскрывающемся списке слева указывается активная целевая система. Это система, в которой CMake будет вызываться для настройки и сборки проекта. В этом раскрывающемся списке отображается локальный компьютер, все SSH-подключения в диспетчере подключений по имени узла, а также все установки подсистемы Windows для Linux (WSL), которые может найти Visual Studio:
В предшествующем примере:
- 192.168.0.5 — это удаленная система Linux, добавленная в диспетчер подключений.
- ubuntu2004 и debian — это установки WSL.
Выберите элемент Управление подключениями, чтобы открыть диспетчер подключений.
Выбор предустановки настройки
В раскрывающемся списке посередине можно выбрать активную предустановку настройки. Это значение , которое будет использоваться при вызове CMake для создания системы сборки проекта. В этом раскрывающемся списке приведены нескрытые предустановки настройки, определенные в файлах и .
Visual Studio будет использовать значение в карте поставщика параметров Microsoft Visual Studio, чтобы скрыть настройки, которые не применяются к активной целевой системе. Дополнительные сведения см. в записи в таблице в разделе .
Выберите элемент Управление конфигурациями, чтобы открыть файл , расположенный в корне проекта. Если не существует, он будет создан.
Выбор предустановки сборки
В раскрывающемся списке справа указывается активная предустановка сборки. Это значение , которое будет использоваться при вызове CMake для сборки проекта. В этом раскрывающемся списке приведены нескрытые предустановки сборки, определенные в файлах и .
Все предустановки сборки должны указывать связанное значение . Visual Studio скрывает предустановки сборки, которые не применяются к активной предустановке настройки. Дополнительные сведения см. в .
Если нет предустановок сборки, связанных с активной предустановкой настройки, Visual Studio выдаст список предустановок сборки по умолчанию. Предустановка сборки по умолчанию эквивалентна передаче без других аргументов из командной строки.
Configure
Visual Studio автоматически пытается настроить проект, когда обнаружит, что кэш CMake устарел. Чтобы вручную вызвать конфигурацию, в главном меню выберите элементы Проект > Настроить <project-name> . Это эквивалентно выполнению в командной строке, где — имя активной предустановки конфигурации.
Сведения об отключении автоматического создания кэша см. в разделе .
Сборка
Чтобы выполнить сборку всего проекта, выберите в главном меню пункт Сборка > Собрать все. Это эквивалентно выполнению в командной строке, где — имя активной предустановки сборки.
Чтобы создать один целевой объект, переключитесь на представление целевых объектов CMake в Обозревателе решений. Затем щелкните правой кнопкой мыши любой целевой объект и выберите в контекстном меню пункт Сборка.
Примечание
Visual Studio 2019 не поддерживает параметр для создания подмножества целевых объектов, указанных в .
Основные этапы ручного тестирования программного обеспечения
-
Подготовительный
На этом этапе проводится анализ исходных документов о системе, среди которых могут быть ТЗ, функциональные и бизнес-требования, паспорт проекта и другие. Дальше разрабатываются и согласовываются план тестирования и тест-кейсы, сроки и число итераций, оцениваются возможные риски. -
Основной
Тестирование ведется вручную по подготовленным заранее тестовым сценариям с фиксированием всех найденных ошибок в багтрекинговой системе. -
Итоговый
На завершающем этапе разрабатываются и согласовываются отчеты о проведенном тестировании. Обычно они включают в себя список обнаруженных отклонений и рекомендации о возможности внедрения ПО.
Терминология
- Файл служит скриптом (рецептом, сценарием) сборки проекта. Обычно один такой файл собирает все исходники в своём каталоге и в подкаталогах, при этом подкаталоги могут содержать, а могут не содержать дочерние файлы . С точки зрения IDE, таких как CLion или Visual Studio, файл также служит проектом, с которым работает программист внутри IDE.
- В cmake есть “цель” (“target”) — компонент, который следует собрать. Компонент может быть исполняемым файлом, так и статической либо динамической библиотекой.
- В cmake есть “проект” (“project”) — это набор компонентов, по смыслу похожий на Solution в Visual Studio.
- В cmake есть “флаги” (flags) — это аргументы командной строки для компилятора, компоновщика и других утилит, вызываемых при сборке.
- В cmake есть переменные, и в процессе интерпретации файла система сборки cmake вычисляет ряд встроенных переменных для каждой цели, тем самым получая флаги. Затем cmake создаёт вторичный скрипт сборки, который будет напрямую вызывать компилятор, компоновщик и другие утилиты с вычисленными флагами.
Building an Installer (Step 7)¶
Next suppose that we want to distribute our project to other people so that
they can use it. We want to provide both binary and source distributions on a
variety of platforms. This is a little different from the install we did
previously in , where we were
installing the binaries that we had built from the source code. In this
example we will be building installation packages that support binary
installations and package management features. To accomplish this we will use
CPack to create platform specific installers. Specifically we need to add a
few lines to the bottom of our top-level file.
include(InstallRequiredSystemLibraries) set(CPACK_RESOURCE_FILE_LICENSE"${CMAKE_CURRENT_SOURCE_DIR}/License.txt") set(CPACK_PACKAGE_VERSION_MAJOR"${Tutorial_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR"${Tutorial_VERSION_MINOR}") include(CPack)
That is all there is to it. We start by including
. This module will include any runtime
libraries that are needed by the project for the current platform. Next we set
some CPack variables to where we have stored the license and version
information for this project. The version information was set earlier in this
tutorial and the has been included in the top-level source
directory for this step.
Finally we include the which will use these
variables and some other properties of the current system to setup an
installer.
The next step is to build the project in the usual manner and then run the
executable. To build a binary distribution, from the
binary directory run:
cpack
To specify the generator, use the option. For multi-config builds, use
to specify the configuration. For example:
cpack -G ZIP -C Debug
To create a source distribution you would type:
cpack --config CPackSourceConfig.cmake
Alternatively, run or right click the target and
from an IDE.
Профилировщик кода (профайлер, профилер)
Профилировщик кода, или как часто на жаргоне его называют профилер (от слова profiler) — это инструмент, который собирает информацию о работе программы. Как правило, профилер требуется в тех случаях, когда ваша программа работает не так быстро, как хотелось бы.
Чтобы найти узкое место программы запускают профилер, который фиксирует время выполнения различных фрагментов программы.
Существует много профилеров, как универсальных, так и специализированных. Большой список можно найти здесь (en).
Но самым популярным профилером является GNU Gprof. Он есть в сборке Си-экспресс. Чтобы его использовать, нужно сделать следующие действия:
1. Включить профилирование в параметрах сборки проекта. Щелкнуть правой кнопкой на проекте и выбрать соответствующий пункт меню.
2. Перекомпилировать и запустить программу.
3. Запустить профилер. Меню — Модули — Code profiler
Adding a Library (Step 2)¶
Now we will add a library to our project. This library will contain our own
implementation for computing the square root of a number. The executable can
then use this library instead of the standard square root function provided by
the compiler.
For this tutorial we will put the library into a subdirectory
called . This directory already contains a header file,
, and a source file . The source file has one
function called that provides similar functionality to the
compiler’s function.
Add the following one line file to the
directory:
add_library(MathFunctionsmysqrt.cxx)
To make use of the new library we will add an
call in the top-level file so that the library will get
built. We add the new library to the executable, and add as
an include directory so that the header file can be found. The
last few lines of the top-level file should now look like:
# add the MathFunctions library add_subdirectory(MathFunctions) # add the executable add_executable(Tutorialtutorial.cxx) target_link_libraries(TutorialPUBLICMathFunctions) # add the binary tree to the search path for include files # so that we will find TutorialConfig.h target_include_directories(TutorialPUBLIC "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/MathFunctions" )
Now let us make the MathFunctions library optional. While for the tutorial
there really isn’t any need to do so, for larger projects this is a common
occurrence. The first step is to add an option to the top-level
file.
option(USE_MYMATH"Use tutorial provided math implementation"ON) # configure a header file to pass some of the CMake settings # to the source code configure_file(TutorialConfig.h.inTutorialConfig.h)
This option will be displayed in the and
with a default value of ON that can be changed by the user. This setting will
be stored in the cache so that the user does not need to set the value each
time they run CMake on a build directory.
The next change is to make building and linking the MathFunctions library
conditional. To do this we change the end of the top-level
file to look like the following:
if(USE_MYMATH) add_subdirectory(MathFunctions) list(APPENDEXTRA_LIBSMathFunctions) list(APPENDEXTRA_INCLUDES"${PROJECT_SOURCE_DIR}/MathFunctions") endif() # add the executable add_executable(Tutorialtutorial.cxx) target_link_libraries(TutorialPUBLIC${EXTRA_LIBS}) # add the binary tree to the search path for include files # so that we will find TutorialConfig.h target_include_directories(TutorialPUBLIC "${PROJECT_BINARY_DIR}" ${EXTRA_INCLUDES} )
Note the use of the variable to collect up any optional
libraries to later be linked into the executable. The variable
is used similarly for optional header files. This is a
classic approach when dealing with many optional components, we will cover
the modern approach in the next step.
The corresponding changes to the source code are fairly straightforward.
First, in , include the header if we
need it:
#ifdef USE_MYMATH # include "MathFunctions.h" #endif
Then, in the same file, make control which square root
function is used:
#ifdef USE_MYMATH const double outputValue = mysqrt(inputValue); #else const double outputValue = sqrt(inputValue); #endif
Since the source code now requires we can add it to
with the following line:
#cmakedefine USE_MYMATH
Exercise: Why is it important that we configure
after the option for ? What would happen if we inverted the two?
Run the executable or the
to configure the project and then build it
with your chosen build tool. Then run the built Tutorial executable.
Now let’s update the value of . The easiest way is to use the
or if you’re
in the terminal. Or, alternatively, if you want to change the option from the
command-line, try:
cmake ../Step2 -DUSE_MYMATH=OFF
Rebuild and run the tutorial again.
Generated Installation Script¶
Note
Use of this feature is not recommended. Please consider using the
argument of instead.
The command generates a file, , inside
the build directory, which is used internally by the generated install target
and by CPack. You can also invoke this script manually with . This
script accepts several variables:
-
Set this variable to install only a single CPack component as opposed to all
of them. For example, if you only want to install the
component, run . -
Set this variable to change the build type if you are using a multi-config
generator. For example, to install with the configuration, run
. -
This is an environment variable rather than a CMake variable. It allows you
to change the installation prefix on UNIX systems. See for
details.
Включение интеграции CMakePresets.json в Visual Studio 2019
Интеграция в Visual Studio 2019 по умолчанию отключена. Ее можно включить для всех проектов CMake в разделе Сервис > Параметры > CMake > Общие:
Важно!
Чтобы активировать интеграцию, закройте и снова откройте папку в Visual Studio.
Если вы не хотите включать интеграцию для всех проектов CMake, можно включить интеграцию для одного проекта CMake, добавив файл в корень открытой папки. Чтобы активировать интеграцию, закройте и снова откройте папку в Visual Studio.
В следующей таблице показано, когда используется вместо для выполнения настройки и сборки CMake. Если файл конфигурации отсутствует, используются стандартные предустановки настройки.
В таблице «Сервис > Параметры включены» означает выбор параметра Использование CMakeePresets.json для настройки, создания и тестирования CMake в меню Сервис > Параметры > CMake > Общие.
Файлы конфигурации. | Сервис > Параметры — отключено | Сервис > Параметры — включено |
---|---|---|
Файл конфигурации отсутствует | ||
присутствует | ||
присутствует | ||
Имеются оба файла конфигурации |
Общие рекомендации по выбору лучшей программы
Чтобы понять подходит ли выбранное программное обеспечение для работы, рекомендуется поработать в бесплатной версии хотя бы месяц. Чтобы сузить список, можно ориентироваться на собственные приоритеты
Параметры, на которые нужно обратить внимание:
Канбан-доски.
Главная рабочая область программы. Поле должно хорошо «читаться», вмещать не только отдельные задачи, но и отображать полную картину продвижения проекта.
Список задач.
Самая простая, но важная функция любой программы. Каждый сотрудник должен иметь доступ к перечню своих заданий, быстро менять статус выполнения. Хорошая программа позволяет выставить приоритеты, передать сформированный список на мобильные устройства.
Отслеживание прогресса.
Очень важно чтобы проект был реализован в срок, и не вышел за рамки установленного бюджета. Желательно, чтобы выбранная программа автоматически «напоминала» о том, сколько дней остается до завершения, какое количество финансов затрачено
Формирование отчетов.
Чтобы оценить прогресс работы, необходимо хотя бы раз в неделю смотреть на общую картину. В зависимости от функционала выбранной программы, в один файл можно выгружать, как минимум, информацию о просроченных и выполненных задачах, затраченных ресурсах.
Можно сказать, что разные программы очень похожи друг на друга. Нужно найти именно ту, в которой будет комфортно работать.
Управлять проектами с помощью специально разработанных инструментов очень удобно. Для контроля мелких текущих задач достаточно бесплатного сервиса без большого количества функций. Но руководителям крупных компаний стоит оплатить ресурс с полноценной службой поддержки.
Create a CMake project
If you have an existing CMake project that already has a file in the root directory, you can skip to to configure your existing project.
Otherwise, create a folder for a new project. From the Terminal window, create an empty folder called , navigate into it, and open VS Code in that folder by entering the following commands:
The command opens VS Code in the current working folder, which becomes your «workspace».
Create a CMake hello world project
The CMake Tools extension can create the files for a basic CMake project for you. Open the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) and run the CMake: Quick Start command:
Enter a project name. This will be written to and a few initial source files.
Next, select Executable as the project type to create a basic source file () that includes a basic function.
Note: If you had wanted to create a basic source and header file, you would have selected Library instead. But for this tutorial, Executable will do. If you are prompted to configure IntelliSense for the folder, select Allow.
This creates a hello world CMake project containing , (which tells the CMake tools how to build your project), and a folder named for your build files:
Select a kit
Before you can use the CMake Tools extension to build a project, you need to configure it to know about the compilers on your system. Do that by scanning for ‘kits’. A kit represents a toolchain, which is the compiler, linker, and other tools used to build your project. To scan for kits:
-
Open the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) and run CMake: Select a Kit. The extension will automatically scan for kits on your computer and create a list of compilers found on your system.
-
Select the compiler you want to use. For example, depending on the compilers you have installed, you might see something like:
Zoho Projects: облачная система для удаленного управления проектами
Инструмент подходит для компаний с головным офисом и разветвленной сетью филиалов. Zoho Projects позволяет отслеживать прогресс выполнения бизнес-задач, комментировать ошибки, создавать интуитивно понятные инструкции, отчеты. Вся информация хранится в облаке, что позволяет получить доступ к нужной информации в любое время из любого места.
Преимущества Zoho Projects:
- лучший набор коммуникационных инструментов, включая чат в реальном времени, закрытые комнаты-форумы;
- есть бесплатная версия с базовыми функциями и ограниченным числом пользователей;
- стандартный план с поддержкой пользователей стоит всего 3 доллара.
Недостатками инструмента называют ограниченное количество отчетов, отсутствие русскоязычной поддержки.
Интеграция с IDE
Если выбрать Файл > Открыть > Папка, чтобы открыть папку, содержащую файл , происходит следующее:
-
Visual Studio добавляет пункт CMake в главное меню с командами для просмотра и редактирования сценариев CMake.
-
Обозреватель решений отображает структуру папок и файлы.
-
Visual Studio запускает CMake и при необходимости создает кэш CMake для конфигурации по умолчанию, которой является отладка x86. В окне вывода отображается командная строка CMake, а также прочие выходные данные CMake.
-
В фоновом режиме Visual Studio индексирует исходные файлы для поддержки функций IntelliSense, просмотра информации, рефакторинга и т. д. По мере работы Visual Studio отслеживает изменения в редакторе, а также на диске, чтобы синхронизировать индекс с источниками.
Вы можете открыть папки, содержащие любое количество проектов CMake. Visual Studio обнаруживает и настраивает все «корневые» файлы в рабочей области. Операции CMake (настройка, сборка, отладка), C++ IntelliSense и просмотр доступны для всех проектов CMake в вашей рабочей области.
Вы также можете просмотреть проекты, логически упорядоченные по целевым объектам. Выберите Представление целевых объектов из раскрывающегося списка на панели инструментов в обозревателе решений:
Visual Studio использует файл с именем для хранения переменных среды или параметров командной строки для CMake. также позволяет определить и сохранить несколько конфигураций сборки CMake. Вы можете легко переключаться между ними в интегрированной среде разработки.
В противном случае используйте так же, как в любом проекте CMake, чтобы указывать исходные файлы, находить библиотеки, устанавливать параметры компилятора и компоновщика и указывать другие сведения о системе сборки.
Если вам нужно передавать аргументы для исполняемого файла во время отладки, можно использовать другой файл с именем . В некоторых сценариях Visual Studio автоматически создает эти файлы. Вы можете изменить их вручную или даже создать файл самостоятельно.
Примечание
Для других типов проектов «Открыть папку» используются два дополнительных файла JSON: и . Ни один из них не связан с проектами CMake.
A Sample CMake project
We’ll create a simple C++ Hello World program which uses CMake. Let’s start by creating a different directory for our project. Using the mkdir and cd commands:
$ mkdir projectzero; cd projectzero
Currently, the directory is empty. We’ll now create a C++ source file named which, as the name suggests, will print just Hello World!
You can use the editor of your choice. I’ll be using nano:
$ nano hello_world.cpp
#include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0 ; }
Now we’ll create a file(with this exact capitalization) which is required by CMake:
$ nano CMakeLists.txt
The root directory of the project ( in this case) must contain a file. Each line in a file has a command.
The file for this project is quite trivial and will only contain these three lines:
cmake_minimum_required(VERSION 3.18) project(MyProject VERSION 0.0.1) add_executable(hello hello_world.cpp)
It’s a good practice to have a separate directory for executables. So, let’s do that:
$ mkdir build
The project structure looks like this now:
Project Structure
To run we need to change into the directory:
$ cd build $ cmake ..
cmake Configuration
The is an alias for the parent directory and tells to find the file in the parent directory. If you see CXX anywhere while working with CMake, it refers to C++ as CXX.
Running generated the configuration files for CMake in . We can list the contents of directory using the ls command:
build Directory Contents
Now we can generate the executable simply by typing:
$ cmake --build .
Building Executable
Run the executable by typing:
$ ./hello
Running The Executable
Congratulations on building your first CMake project. You can find more such beginner-friendly CMake projects on this GitHub profile.
Microsoft Project: надежный, проверенный, доступный инструмент
Один из самых доступных инструментов, пользоваться которым можно абсолютно бесплатно. Достаточно скачать пакет MS Office. В программе есть все необходимое для управления бизнес-проектами:
- диаграммы Ганта;
- возможность постановки задач и подзадач;
- готовые шаблоны.
С помощью Microsoft Project руководитель может распределять ресурсы, оценивать временные затраты, просчитывать критический путь, отслеживать контрольные точки.
Плюсы: не нужно тратить много времени на освоение системы, интерфейс интуитивно понятен всем, кто пользовался другими программами MS Office. Microsoft Project используют даже крупные корпорации с целью курирования масштабных проектов.
Минусы: интерфейс можно назвать устаревшим. Сервисом неудобно пользоваться с мобильных устройств.
Установка CMake в Ubuntu
1. Менеджер приложений
На момент написания этой статьи использовалась самая последняя версия CMake (3.15.2). Она была доступна в рамках известного всем магазина Snap Store. Ниже вы узнаете, как установить CMake через штатный в Менеджер приложений в Ubuntu.
Если вы не хотите тратить много времени на взаимодействие с командной строкой, то работа с графическим интерфейсом должна вам понравиться из-за своей простоты. На панели инструментов, расположенной слева, щёлкните значок Менеджер приложений.
В верхней части открывшегося окна нажмите на значок поиска и в появившейся строке введите CMake. Результаты отобразятся следующим образом:
Первый пакет в результатах поиска — это и есть нужный нам файл, доступный в рамках магазина Snap Store. Щёлкните по этой записи и вы попадёте в раздел с подробной информацией о приложении, который будет выглядеть так:
Нажмите кнопку Установить, чтобы запустить процесс установки CMake. Возможно, вам придётся ввести свой пароль в окошке аутентификации, которе появится сразу после нажатия кнопки Установить. Это одна из форм защиты в Ubuntu — только авторизированный пользователь может устанавливать программное обеспечение в этой системе.
Введите свой пароль и нажмите кнопку Enter. После этого вы сможете наблюдать за статусом установки на отображающемся графическом индикаторе.
После успешной установки система выдаст вам следующее сообщение:
Из этого окна уже можно запустить CMake (или тут же, например, удалить).
2. Менеджер пакетов snap и apt
Такую же версию CMake можно установить через командную строку, если воспользоваться следующей командой:
Установка cmake ubuntu 18.04 из официальных репозиториев выполняется командой:
3. Сборка CMake из исходников
Если по каким-то причинам вы не хотите использовать графический интерфейс, или вы хотите самую свежую версию, можно прибегнуть к помощи командной строки. Нам надо будет скачать исходный код с официального сайта (https://cmake.org/download/), скомпилировать его, а потом установить.
Откройте командную строку — для этого либо найдите приложение «Терминал», либо нажмите сочетание клавиш Ctrl+Alt+T. Введите команду, которая начнёт загрузку исходного кода:
Когда tar.gz полностью скачается, его нужно распаковать. Воспользуемся следующей командой:
Перейдём с помощью терминала к папке с распакованными файлами:
Чтобы провести компиляцию скачанного кода, выполним ещё одну команду:
После правильного выполнения всех операций, командная строка выдаст следующий результат:
Теперь можно запустить процесс установки с помощью простой команды:
Затем выполните ещё одну команду:
Процесс установки завершён. Теперь можно проверить версию CMake, чтобы убедиться в правильности своих действий.
На момент написания этого материала CMake был доступен в версии 1.15.2, с которой мы и работали. Теперь вы можете использовать этот инструмент для выполнения своих рабочих задач.
Полезные ссылки
Подкаст с обменом опытом автоматизации тестирования мобильных приложенийКурс по автоматизацииgithub.com/appium/appium/blob/master/docs/en/drivers/android-uiautomator2.mdbitbar.com/how-to-get-started-with-ui-automator-2-0developer.android.com/training/testing/ui-testing/uiautomator-testing.htmlgithub.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest.mddeveloper.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.htmldeveloper.android.com/training/testing/espresso/index.htmldeveloper.android.com/training/testing/ui-testing/espresso-testing.htmlgithub.com/RobotiumTech/robotiumgithub.com/RobotiumTech/robotium/wiki/Questions-&-Answersselendroid.io/setup.htmlselendroid.io/faq.htmlgithub.com/calabash/calabash-iosgithub.com/calabash/calabash-ios/wiki/DeviceAgentbadoo.com/techblog/blog/2017/01/24/break-limitations-with-calabash-androidgithub.com/google/EarlGreybitbar.com/how-to-get-started-with-earlgrey-ios-functional-ui-testing-frameworkappium.io/introduction.htmlgithub.com/appium/appiumwww.mutuallyhuman.com/blog/2017/04/20/webdriveragent-getting-started-with-automated-ios-testingcucumber.iojunit.org/junit5testng.org/docdeveloper.xamarin.com/guides/testcloud/uitestdeveloper.xamarin.com/guides/testcloud/uitest/intro-to-uitestdoc.froglogic.com/squish/6.0/tutorials-iphone.htmldoc.froglogic.com/squish/6.0/tutorials-android.htmlwww.ranorex.com/help/latest/android-testingwww.ranorex.com/help/latest/android-testing/automation-of-system-appswww.ranorex.com/help/latest/ios-testing
Install CMake through the Ubuntu UI
The latest version of CMake at the time of writing this article was 3.20.0 and luckily available through the Snap Store. Here, we will explain how you can install it through the Ubuntu Software Manager.
Installation
For a person who does not want to open the Command Line much, installing software present in the Ubuntu repository through the UI is very simple. On your Ubuntu desktop Activities toolbar, click the Ubuntu Software icon.
In the following view, click on the search icon and enter “CMake” in the search bar. The search results will display Cmake as follows:
The first package listed in the search result is the one maintained by the Snap Store. From the Software Manager, click on the CMake entry to open the following view:
Click the Install button to begin the installation process. The following authentication dialog will display for you to provide your authentication details as only an authorized user can install software on Ubuntu.
Enter your password and click the Authenticate button. After that, the installation process will begin, displaying a progress bar as follows.
CMake will then be installed to your system and you will get the following message after a successful installation:
Through the above dialog, you can choose to directly launch CMake and even Remove it immediately for whatever reason.
Note: The same version of the software can be installed through the command line using the following command:
$ sudo snap install cmake
Remove CMake
If you want to remove CMake that was installed using the above method, you can remove it from your system as follows:
Open the Ubuntu Software Manager and search for CMake. You will see the “Installed” status in the search entry. Click this entry and then click Remove from the following view:
Then, the system will prompt you with an Authentication dialog. The software will be removed when you provide the password for the sudo user and click Authenticate on the dialog.