Cmake команда не найдена debian

Обновлено: 03.07.2024

установил. на туже команду новый ответ
-- The C compiler identification is GNU
-- The CXX compiler identification is unknown
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: CMAKE_CXX_COMPILER-NOTFOUND
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working CXX compiler: CMAKE_CXX_COMPILER-NOTFOUND -- broken
CMake Error at /usr/share/cmake-2.6/Modules/CMakeTestCXXCompiler.cmake:25 (MESSAGE):
The C++ compiler "CMAKE_CXX_COMPILER-NOTFOUND" is not able to compile a
simple test program.

It fails with the following output:

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:2 (project)

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as

should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring done
выполнив команду
sudo aptitude install lsb-cxx openc++
и установив компилятор С++ вот какой получил ответ на туже команду
-- The CXX compiler identification is GNU
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at /usr/share/cmake-2.6/Modules/FindKDE4.cmake:72 (MESSAGE):
ERROR: cmake/modules/FindKDE4Internal.cmake not found in
/home/ibergard/.kde4/share/apps;/usr/lib/kde4/share/kde4/apps
Call Stack (most recent call first):
CMakeLists.txt:7 (find_package)

CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as

should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.

Я пытаюсь установить последнюю cmake версию в моей Linux-системе и всегда получаю следующее исключение:

Всегда повторяется . Есть мысли?

Кто-нибудь знает, что я здесь не так делаю? Или есть ли лучший способ установить последнюю версию cmake в мою коробку Linux?

Я думаю, что ваш вопрос «Как установить последнюю версию cmake в Linux», но команда sudo apt-get install cmake не устанавливает последнюю версию.

Однако есть гораздо более простой способ:

Обновление: комментаторы отмечают, что «Ubuntu 12.04 поставляется только с v2.8.7», а «14.04 все еще поставляется с 2.8» . Вот почему: 12.04 и 14.04 - это LTS-релизы Ubuntu. Предполагается, что выпуски LTS будут оставаться стабильными в течение 5 лет, поэтому они получают только обновления безопасности и критические обновления, а не последние выпуски пакетов. Нормальные выпуски выходят каждые 6 месяцев, и, следовательно, более вероятно, что они будут выпущены недавно.

Ubuntu 12.04 поставляется только с версией 2.8.7 cmake с apt-get. Текущий выпуск версии 2 - 2.8.12. Я предлагаю вам продолжать строить его из источника. Это не правильный ответ. Последняя версия почти никогда не выходит на apt. Этот ответ неверен. Политика StableReleaseUpdates предназначена не только для версий LTS. Все выпуски Ubuntu, когда-то выпущенные, получают исправления только для уязвимостей системы безопасности или серьезных ошибок. Как показано здесь (и на Launchpad ), даже не-LTS релизы не получили новых cmake версий. Отдельные бэкпорты для некоторых пакетов существуют (но не существуют cmake ). Этот ответ неверен, потому что sudo apt-get install cmake сам по себе никогда не обновляется cmake до более новой версии. Это не работает ни в одном выпуске Ubuntu. Если ваш ответ на самом деле «обновить вашу систему Ubuntu до более новой версии», то вы можете отредактировать ее еще раз, чтобы сделать это более понятным. (Однако это не было бы разумным решением для многих пользователей, и часто не существует выпущенной версии Ubuntu, чьи репозитории имеют последнюю версию cmake .)

Как я могу получить последнюю версию?

Ну, мы можем установить его одним из следующих способов: Сборка и установка или Использование бинарных файлов .

А. Сборка и установка (рекомендуется)

А-1. Удалите версию по умолчанию, предоставляемую менеджером пакетов Ubuntu и настройкой, используя:

А-2. Перейдите на официальную веб-страницу CMake , затем загрузите и распакуйте последнюю версию. Обновление version и build переменные в следующей команде , чтобы получить нужную версию:

А-3. Установите извлеченный источник, запустив:

А-4. Протестируйте свою новую cmake версию.

Результаты cmake --version :

Б. Использование бинарных файлов (не очень cmake-gui хорошо работает)

Б-1. Удалите версию по умолчанию, предоставляемую менеджером пакетов Ubuntu, как в A-1 .

БИ 2. Перейдите на официальную веб-страницу CMake , затем загрузите и установите последнюю .sh версию в opt/cmake . Обновление version и build переменные в следующей команде , чтобы получить нужную версию:

Б-3. Добавьте установленную двоичную ссылку /usr/local/bin/cmake , выполнив это:

Б-4. Проверьте свою новую cmake версию, как в A-4 .

Запись

В 3.15.X X представляет собой последнюю часть версии , которую мы определили как строить. Сборка может измениться, если cmake обновлен. Согласно официальной веб-странице, последняя версия 3.15.4 . Если вам нужна предыдущая версия 3.14.7, просто замените версию и параметры сборки следующим образом:

Случилось мне сегодня заняться установкой Asterisk 18 на новую виртуальную машину на Centos 8. Поставил версиб ОС базовую, без лишнего мусора. В процессе установки дополнительных модулей Asterisk, а именно LibPRI столкнулся с проблемой. Ошибка make: command not found может вылезти при установке любого ПО из исходников.

Необходимо было скачать пакет и выполнить его компиляцию, команда make. Однако, как оказалось, данная команда не входит в базовую поставку Centos 8. Сейчас мы это дело исправим.

Установка пакета make

Рассмотрим установку пакета make в разных операционных системах. Не забываем что установка ПО происходит от пользователя с правами root. Если вы в системе не под root используйте sudo.

Centos 8


Centos 7 (Red Hat и прочие RPM подобные)

Ubuntu (Debian и прочие DEB подобные)

Мы установили нужный нам пакет make. Для полноценной работы советую установить несколько пакетов входящих в группу Development tools. Пакет make также туда входит и еще много других, которые наверняка пригодятся при установке ПО.

Установка Development tools

Centos 8


Как видно из скриншота пакет Development tools имеет не малый размер. Но по современным меркам он уже не кажется каким то огромным. Считаю что его установка полностью себя оправдает в дальнейшем использовании системы.

Centos 7 (Red Hat и прочие RPM подобные)

Установка Build essential

В Ubuntu пакет содержащий make, а также остальные необходимые в том числе для компиляции приложений называется build-essential

Чтобы не столкнуться с ошибкой make: command not found конечно, можно сразу при установке системы ставить полный комплект. Однако вместе с ним будет установлено много не нужных программ, которые скорее всего никогда не пригодятся.

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

image

CMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.

Для того что бы собрать проект средствами CMake, необходимо в корне дерева исходников разместить файл CMakeLists.txt, хранящий правила и цели сборки, и произвести несколько простых шагов.
Разберёмся на примерах.

Пример 1. Hello, World:


Для начала напишем простейший хеловорлд и создадим структуру проекта:

Создадим пустую директорию для временных файлов и перейдём туда.

$ mkdir tmp
fshp@panica-desktop:

$ cd tmp/
fshp@panica-desktop:


Теперь запустим команду cmake, передав ей в качестве параметра путь к папке с исходниками:

/cmake/example_1/

— Build files have been written to: /home/fshp/tmp
fshp@panica-desktop:

/tmp$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
fshp@panica-desktop:


Видим, что в папке появилось несколько временных файлов, необходимых для сборки проекта.
Теперь можно запустить непосредственно make:

/tmp$ make
Scanning dependencies of target main
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
Linking CXX executable main
[100%] Built target main
fshp@panica-desktop:

/tmp$ ./main
Hello, World!
fshp@panica-desktop:

Итак, наша программа собралась.
Папку tmp можно очищать\удалять без риска поломать исходники. Если CMakeLists.txt был изменен, то вызов make автоматически запустит cmake. Если исходники были перемещены, то нужно очистить временную директорию и запустить cmake вручную.

Пример 2. Библиотеки:


Если ваш проект содержит библиотеку, то CMake соберет ее без проблем.
Для этого усложним пример.

Переменные могут хранить списки значений, разделённых пробелами\табуляциями\переносами:

Оба варианта правильные
Что бы получить значение переменной ипользуем конструкцию:

Итак, эта версия нашего проекта включает в себя одну статическую библиотеку, собираемую из исходников. Если заменить «STATIC» на «SHARED», то получим библиотеку динамическую. Если тип библиотеки не указать, по умолчанию она соберётся как статическая.
При линковке указываются все необходимые библиотеки:

Как и при ручной компиляции, имена библиотек указываются без стандартного префикса «lib».
Итак, сборка библиотек с CMake не вызывает проблем, при этом тип библиотеки статическая\динамическая меняется лишь одним параметром.

Пример 3. Подпроекты:


Подпроекты очень удобны, если ваша программа разбита на несколько библиотек или же проект состоит из нескольких программ.
Каждый подпроект является по сути полноценным проектом и может использоваться самостоятельно.
Теперь у нас «foo» находится в субдирректории и там же находится CMakeLists.txt подпроекта.

В файле подпроекта ничего нового для вас нет. А вот в основном файле новые команды:

main.cpp мы не меняли, а foo.h перенесли. Команда указывает компилятору, где искать заголовочные файлы. Может быть вызвана несколько раз. Хидеры будут искаться во всех указаных директориях.

Указываем директорию с подпроектом, который будет собран как самостоятельный.
Вывод: проекты на CMake можно объединять в довольно сложные иерархические структуры, причем каждый подпроект в реальности является самостоятельным проектом, который в свою очередь может сам состоять из подпроектов. Это позволяет легко разбить вашу программу на необходимое количество отдельных модулей. Примером такого подхода может служить KDE.

Пример 4. Поиск библиотек:

CMake обладает достаточно развитыми средствами поиска установленых библиотек, правда они не встроеные, а реализованы в виде отдельных модулей. В стандартной поставке довольно много модулей, но некоторые проекты (например Ogre) поставляют свои. Они позволяют системе автоматически определить наличие необходимых для линковки проекта библиотек.
На debian модули располагаются в /usr/share/cmake-2.8/Modules/ (у вас версия может отличаться). За поиск библиотек отвечают модули, называющиеся FindNAME.cmake, где NAME — имя библиотеки.

Пример 5. Внешние библиотеки и объектные файлы:

Если вы пишите для «дяди», а злой «дядя» любит самописные библиотеки и делиться исходниками не желает, поэтому присылает готовую библиотеку, то вы по адресу.
Объектные файлы в CMake стоят на ряду с исходниками — достаточно включить объектник в список файлов для компиляции.
С библиотеками потуже. Как известно, статическая библиотека это не что иное, как ar-архив, внутри которого лежат обычные объектники, никак не связаные между собой. Вы, наверное, уже догадались, как я поступал сначала. Да, просто потрошил библиотеку. Но потом был найден способ поэлегантнее:

Слово «IMPORTED», указывает, что библиотека берётся извне.
В CMake каждая цель имеет параметры, а set_property позволяет их изменять.
Линкуется такая библиотека стандартно:

Для динамических библиотек все аналогично, только тип «SHARED», расширение — ".so".
К сожалению, поддержка несистемных библиотек реализована немного костыльно. Возможно, я просто не знаю правильного варианта, поэтому буду рад, если «ткнете мордочкой». С другой стороны это не навороченый экзоскелет с системой жизнеобеспечения, а простейший костыль из двух строк.

Генераторы:


Как было сказано в начале, CMake умеет генерировать множество различных видов проектов. Это удобно и позволяет использовать CMake для практически любой популярной IDE.
Если запустить cmake без параметров, в конце будут описаны доступные генераторы. Пользоваться так:

/cmake/example_3/ -G "KDevelop3 — Unix Makefiles"

Заключение:

Это не перевод мануала, а результат использования CMake в одном коммерческом проекте. Буду рад, если статья поможет хотя бы одному человеку — на русском языке подобной документации довольно мало.

Читайте также: