CMake

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 16:37

Olej писал(а):
19 авг 2021, 16:30
Это и есть репозиторий разработчика CMake.
Ну и ещё дополнительно можно поставить:

Код: Выделить всё

olej@R420:~$ aptitude show cmake-curses-gui
Пакет: cmake-curses-gui                          
Версия: 3.21.1-0kitware1ubuntu20.04.1
Состояние: не установлен
Приоритет: необязательный
Раздел: devel
Сопровождающий: Kitware Debian Maintainers <debian@kitware.com>
Архитектура: amd64
Размер в распакованном виде: 10,4 M
Зависит: cmake (= 3.21.1-0kitware1ubuntu20.04.1), libc6 (>= 2.28), libgcc-s1 (>= 3.0), libncurses6 (>= 6), libssl1.1 (>= 1.1.1), libstdc++6 (>= 9), libtinfo6 (>= 6)
Конфликтует: cmake-curses-gui:i386
Описание: Основанный на curses пользовательский интерфейс для CMake (ccmake)
 CMake позволяет управлять процессом сборки ПО с помощью конфигурационных файлов с простым форматом, одинаковых для всех платформ и компиляторов. CMake генерирует файлы
 Makefile подходящие для текущей системы. 
 
 This package provides the CMake curses interface. Project configuration settings may be specified interactively through this GUI. Brief instructions are provided at the
 bottom of the terminal when the program is running. The main executable file for this GUI is "ccmake".
Домашняя страница: https://cmake.org/

Код: Выделить всё

olej@R420:~$ aptitude show cmake-qt-gui
Пакет: cmake-qt-gui                              
Версия: 3.21.1-0kitware1ubuntu20.04.1
Состояние: не установлен
Приоритет: необязательный
Раздел: devel
Сопровождающий: Kitware Debian Maintainers <debian@kitware.com>
Архитектура: amd64
Размер в распакованном виде: 10,8 M
Зависит: cmake (= 3.21.1-0kitware1ubuntu20.04.1), libc6 (>= 2.28), libgcc-s1 (>= 3.0), libqt5core5a (>= 5.12.2), libqt5gui5 (>= 5.11.0~rc1) | libqt5gui5-gles (>=
         5.11.0~rc1), libqt5widgets5 (>= 5.11.0~rc1), libssl1.1 (>= 1.1.1), libstdc++6 (>= 9)
Конфликтует: cmake-qt-gui:i386
Предоставляет: cmake-gui
Описание: Qt based user interface for CMake (cmake-gui)
 CMake позволяет управлять процессом сборки ПО с помощью конфигурационных файлов с простым форматом, одинаковых для всех платформ и компиляторов. CMake генерирует файлы
 Makefile подходящие для текущей системы. 
 
 This package provides the CMake Qt based GUI. Project configuration settings may be specified interactively. Brief instructions are provided at the bottom of the window
 when the program is running. The main executable file for this GUI is "cmake-gui".
Домашняя страница: https://cmake.org/

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 19:15

Olej писал(а):
19 авг 2021, 16:37
Ну и ещё дополнительно можно поставить:

Код: Выделить всё

olej@R420:~$ sudo apt install cmake-curses-gui
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
  cmake-curses-gui
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 3.375 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 10,4 MB.
Пол:1 https://apt.kitware.com/ubuntu focal/main amd64 cmake-curses-gui amd64 3.21.1-0kitware1ubuntu20.04.1 [3.375 kB]
Получено 3.375 kB за 6с (524 kB/s)                                                                                                                                                                                          
Выбор ранее не выбранного пакета cmake-curses-gui.
(Чтение базы данных … на данный момент установлено 391397 файлов и каталогов.)
Подготовка к распаковке …/cmake-curses-gui_3.21.1-0kitware1ubuntu20.04.1_amd64.deb …
Распаковывается cmake-curses-gui (3.21.1-0kitware1ubuntu20.04.1) …
Настраивается пакет cmake-curses-gui (3.21.1-0kitware1ubuntu20.04.1) …
Обрабатываются триггеры для man-db (2.9.1-1) …

Код: Выделить всё

olej@R420:~$ sudo apt install cmake-qt-gui
[sudo] пароль для olej:       
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
  cmake-qt-gui
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 3.480 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 10,8 MB.
Пол:1 https://apt.kitware.com/ubuntu focal/main amd64 cmake-qt-gui amd64 3.21.1-0kitware1ubuntu20.04.1 [3.480 kB]
Получено 3.480 kB за 7с (529 kB/s)                                                                                                                                                                                          
Выбор ранее не выбранного пакета cmake-qt-gui.
(Чтение базы данных … на данный момент установлено 391387 файлов и каталогов.)
Подготовка к распаковке …/cmake-qt-gui_3.21.1-0kitware1ubuntu20.04.1_amd64.deb …
Распаковывается cmake-qt-gui (3.21.1-0kitware1ubuntu20.04.1) …
Настраивается пакет cmake-qt-gui (3.21.1-0kitware1ubuntu20.04.1) …
Обрабатываются триггеры для mime-support (3.64ubuntu1) …
Обрабатываются триггеры для hicolor-icon-theme (0.17-2) …
Обрабатываются триггеры для gnome-menus (3.36.0-1ubuntu1) …
Обрабатываются триггеры для man-db (2.9.1-1) …
Обрабатываются триггеры для shared-mime-info (1.15-1) …
Обрабатываются триггеры для desktop-file-utils (0.24+linuxmint1) …
Вложения
Снимок экрана от 2021-08-19 19-18-27.png
Снимок экрана от 2021-08-19 19-18-27.png (69.29 КБ) 489 просмотров
Снимок экрана от 2021-08-19 19-19-05.png
Снимок экрана от 2021-08-19 19-19-05.png (24.43 КБ) 489 просмотров
Снимок экрана от 2021-08-19 19-20-30.png
Снимок экрана от 2021-08-19 19-20-30.png (144.8 КБ) 489 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 20:11

Olej писал(а):
19 авг 2021, 15:38
По поводу того, есть ли такая возможность генерации под Linux - ничего пока не нашёл!
Тут многое будет зависеть от версий!
Беру такой предыдущий тестовый проект (из единственного C++ файла).

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ ls -l
итого 36
-rw-rw-r-- 1 olej olej   353 авг 19 19:43 CMakeLists.txt
-rw-r--r-- 1 olej olej  1303 авг 19 14:53 vla.cc
-rw-rw-r-- 1 olej olej 28564 авг 19 20:06 vla.hist
Для которого раньше (для сравнения) были написаны сценарии сборки Makefile и под Ninja:
- Makefile :

Код: Выделить всё

CXX += -Wall -pedantic -std=c++17

all: vla

vla:    vla.cc
        $(CXX) $< -o $@
- build.ninja :

Код: Выделить всё

cppflags = -Wall -pedantic -std=c++17

rule cpp
  command = g++ $cppflags -c $in -o $out

build vla: cpp vla.cc
Вложения
VLA.cmake.tgz
(6.99 КБ) 3 скачивания

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 20:14

Olej писал(а):
19 авг 2021, 20:11
Для которого раньше (для сравнения) были написаны сценарии сборки Makefile и под Ninja:
Теперь допишу вручную, как 3-й вариант, сценарий сборки для Cmake:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ cat CMakeLists.txt 
cmake_minimum_required(VERSION 3.15)             # Задать минимальную версию CMake:
project(vla VERSION 1.0 LANGUAGES C CXX)         # Задать характеристики проекта
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pedantic -Wall")

set(SRC_LIST vla.cc)
add_executable(${PROJECT_NAME} ${SRC_LIST})

Всё крайне просто ... интерес здесь представляет не элементарный проект, а технология (сравнительные технологии) сборки.

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 20:17

Olej писал(а):
19 авг 2021, 20:14
Теперь допишу вручную, как 3-й вариант, сценарий сборки для Cmake:
Смотрю help по установленной у меня версии CMake (относительно используемых последующих генераторов сборки):

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes$ cmake --version
cmake version 3.21.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
- версия установлена непосредственно из репозитория разработчиков CMake !

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes$ cmake man
CMake Error: The source directory "/home/olej/2021/OWN_TEST.codes/man" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
olej@R420:~/2021/OWN_TEST.codes$ cmake --help
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>
...
Generators

The following generators are available on this platform (* marks default):
  Green Hills MULTI            = Generates Green Hills MULTI files
                                 (experimental, work-in-progress).
* Unix Makefiles               = Generates standard UNIX makefiles.
  Ninja                        = Generates build.ninja files.
  Ninja Multi-Config           = Generates build-<Config>.ninja files.
  Watcom WMake                 = Generates Watcom WMake makefiles.
  CodeBlocks - Ninja           = Generates CodeBlocks project files.
  CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
  CodeLite - Ninja             = Generates CodeLite project files.
  CodeLite - Unix Makefiles    = Generates CodeLite project files.
  Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
  Kate - Ninja                 = Generates Kate project files.
  Kate - Unix Makefiles        = Generates Kate project files.
  Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
  Sublime Text 2 - Unix Makefiles
                               = Generates Sublime Text 2 project files.
О-ла-ла :-o :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 20:20

Olej писал(а):
19 авг 2021, 20:17
относительно используемых последующих генераторов сборки
Генерация:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ cmake cmake -GNinja  .
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake
Сборка:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ ninja
[1/2] Building CXX object CMakeFiles/vla.dir/vla.cc.o
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc: In function ‘int main(int, char**)’:
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc:22:6: warning: ISO C++ forbids variable length array ‘arr_num’ [-Wvla]
   22 |  int arr_num[ num ];                                         // Variable-Length Arrays (ISO/IEC 9899:1999)
      |      ^~~~~~~
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc:28:7: warning: ISO C++ forbids variable length array ‘arr_log’ [-Wvla]
   28 |  bool arr_log[ num2 ];
      |       ^~~~~~~
[2/2] Linking CXX executable vla
Проверка выполнением:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ ./vla 15
< -74  51  -8  7  -56  -91  36  36  87  -23  4  67  -94  -90  6 >
< -  +  -  +  -  -  +  +  +  -  +  +  -  -  + >

Аватара пользователя
Olej
Писатель
Сообщения: 16461
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: CMake

Непрочитанное сообщение Olej » 19 авг 2021, 20:25

Olej писал(а):
19 авг 2021, 20:17
используемых последующих генераторов сборки
И ещё один, из самых новых, генераторов - Ninja Multi-Config - :
В отличие от генератора Ninja, Ninja Multi-Config генерирует сразу несколько конфигураций с CMAKE_CONFIGURATION_TYPES вместо одной конфигурации с CMAKE_BUILD_TYPE. Для каждой из этих конфигураций будет создан один файл build- <Config> .ninja (с именем конфигурации <Config>). Эти файлы предназначены для запуска с помощью ninja -f build- <Config> .ninja. Также создается файл build.ninja с использованием конфигурации либо из CMAKE_DEFAULT_BUILD_TYPE, либо из первого элемента из CMAKE_CONFIGURATION_TYPES.
Генерация:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ cmake cmake -G'Ninja Multi-Config'  . 
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake
Сборка:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ ninja
[1/2] Building CXX object CMakeFiles/vla.dir/Debug/vla.cc.o
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc: In function ‘int main(int, char**)’:
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc:22:6: warning: ISO C++ forbids variable length array ‘arr_num’ [-Wvla]
   22 |  int arr_num[ num ];                                         // Variable-Length Arrays (ISO/IEC 9899:1999)
      |      ^~~~~~~
/home/olej/2021/OWN_TEST.codes/Chromium/VLA.cmake/vla.cc:28:7: warning: ISO C++ forbids variable length array ‘arr_log’ [-Wvla]
   28 |  bool arr_log[ num2 ];
      |       ^~~~~~~
[2/2] Linking CXX executable Debug/vla
Проверка выполнением - обращаем внимание где теперь оказался исполнимый файл:

Код: Выделить всё

olej@R420:~/2021/OWN_TEST.codes/Chromium/VLA.cmake$ ./Debug/vla 15
< -74  51  -8  7  -56  -91  36  36  87  -23  4  67  -94  -90  6 >
< -  +  -  +  -  -  +  +  +  -  +  +  -  -  + >

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость