Не найдена команда cmake в Linux
СMake это набор кроссплатформенных утилит для сборки программ из исходного кода на разных компиляторах и операционных системах. Непосредственно сборкой она не занимается, а только генерирует Makefile, который потом будет выполнен утилитой make.
Если утилита cmake не установлена в Linux, то при запуске команды компиляции вы получите ошибку:
Попробуйте вручную запустить команду cmake с указанием абсолютного пути:
Проверьте, что путь к каталогу с командой cmake указан в переменной окружения $PATH:
Если нужно, добавьте путь в $PATH.
Рассмотрим, как установить команду make в разных версиях Linux.
Для установки cmake в Ubuntu и Debian (и других deb системах), выполните:
sudo apt-get update
sudo apt-get install cmake
Также можно сразу установить метапакет build-essential, в который входит полный набор утилит для компиляции, в том числе cmake:
sudo apt-get install build-essential
В rpm дистрибутивах (CentOS/RHEL/Fedora) можно установить cmake с помощью пакетного менеджера:
Также вы можете в любом дистрибутиве Linux скачать и установить последнюю версию cmake из исходных файлов:
tar -zxvf cmake-3.22.1-linux-x86_64.tar.gz
Убедитесь, что cmake успешно установлена на вашем хосте, выведя ее версию:
Для сборки из исходников также используется команда CMake. Если она не установлена, появится ошибка cmake command not found.
Русские Блоги
CMake — это сокращение от «cross platform make», это кроссплатформенный инструмент для установки (компиляции), вы можете использовать простые предложения для описания процесса установки или компиляции на всех платформах. Cmake не создает окончательную версию программного обеспечения напрямую, но создает стандартные файлы построения, такие как файлы сборки Unix или проекты / рабочие области Windows, а затем использует их в обычных методах построения. При выводе make-файла или файла проекта он может тестировать функции C ++, поддерживаемые компилятором. Файл конфигурации CMake называется CmakeLists.txt, по одному для каждого каталога.
CMake использует файл CMakeLists.txt для описания процесса сборки и может создавать стандартные файлы сборки, такие как Unix Makefile или проекты / рабочие области Windows Visual C ++. Файл CMakeLists.txt необходимо написать вручную или его можно сгенерировать полуавтоматически, написав сценарий. CMake предоставляет более лаконичный синтаксис, чем autoconfig. Процесс использования CMake для создания файла Makefile и компиляции на платформе Linux выглядит следующим образом:
2) Выполните команду cmake PATH или ccmake PATH, чтобы сгенерировать Makefile (PATH — это каталог, в котором находится CMakeLists.txt)
3) Используйте команду make для компиляции.
Основные особенности CMake:
1) Кросс-платформенный и может генерировать собственные файлы конфигурации компиляции. На платформе Linux / Unix может быть сгенерирован файл makefile; на платформе Apple может быть создан xcode; на платформе Windows может быть сгенерирован файл проекта MSVC;
2) Способность управлять большими проектами, KDE4 — лучшее тому доказательство;
3) Упростите процесс компиляции и процесс компиляции. Цепочка инструментов Cmake очень проста: cmake + make.
4) Эффективное рассмотрение Согласно официальному заявлению KDE, CMake создает kdelib для KDE4 на 40% быстрее, чем использование autotools для сборки kdelib для KDE 3.5.6, в основном потому, что Cmake не имеет libtool в цепочке инструментов.
5) Расширяемый, вы можете писать модули с определенными функциями для cmake и расширять функции cmake.
2. Загрузка и установка CMake
Прямая онлайн-установка: apt-get install cmake
Автономная установка выглядит следующим образом:
Нажмите, чтобы загрузить установочный пакет, Выбираем соответствующую версию, здесь выбираю установку исходной версии.
Примечание: если установлена загруженная двоичная версия
Способ 1: После декомпрессии нужно создать мягкое соединение для cmake
# ln -s /home/app/cmake-3.17.0-Linux-x86_64/bin/* /usr/bin/
Убедитесь, что установка cmake прошла успешно: cmake -version
После распаковки установочного пакета отредактируйте vim / etc / profile или vim ~ / .bashrc, чтобы добавить
Убедитесь, что установка cmake прошла успешно: cmake -version
1) Установка исходного кода
# Wget https://cmake.org/files/v3.17/cmake-3.17.0.tar.gz // Если вы загружаете вручную, скопируйте его по этому пути
Установите gcc и другие пакеты (игнорируйте после установки) # yum install gcc-c ++
2) Посмотреть версию cmake
3. Принцип компиляции CMake
CMake в основном предназначен для записи файла CMakeLists.txt, а затем использования команды cmake для преобразования файла CMakeLists.txt в файл makefile, необходимого для make, и, наконец, использования команды make
Сделайте исходный код скомпилированным для создания исполняемой программы или общей библиотеки (so (общий объект)). Таким образом, компиляция CMake в основном состоит из двух шагов: cmake и make.
cmake указывает на каталог, в котором находится CMakeLists.txt.Например, cmake .. означает, что CMakeLists.txt находится в верхнем каталоге текущего каталога. После cmake будет сгенерировано много скомпилированных промежуточных файлов и файлов makefile, поэтому обычно рекомендуется создать новый каталог специально для компиляции, например
4. Сделайте первый пример.
Вот простейший HelloWorld
1) Новый каталог проекта:Папка HelloWorld, используемая для хранения файлов проекта
2) Запишите исходные файлы:HelloWorld.cpp, напишите следующее:
#include using namespace std; int main()
3) Напишите CMakeLists.txt:
Создайте новый файл CMakeLists.txt в каталоге того же уровня с файлом cpp и напишите следующее содержимое:
#cmake минимальные требования к версии, вы получите предупреждающее сообщение, если не присоединитесь к этой строке cmake_minimum_required(VERSION 3.17) project (HelloWorld) # Название проекта # Добавить все файлы исходного кода и файлы заголовков в текущем каталоге (.) В переменную SRC_LIST aux_source_directory(. SRC_LIST) # Создать приложение HelloWorld (HelloWorld.exe будет автоматически сгенерирован под Windows) add_executable(HelloWorld $)
4) Создайте каталог сборки( цель:Храните много скомпилированных промежуточных файлов и файлов makefile, все сгенерированные проекты конфигурации находятся в каталоге сборки, что относительно ясно )
Внешний метод компиляции:Хотя cmake может компилироваться напрямую в текущем каталоге, создавать каталог сборки нет необходимости. Однако все сгенерированные промежуточные файлы и исходный код будут смешаны вместе, и make-файл, сгенерированный cmake, не сможет отслеживать все промежуточные файлы, то есть команду «make distclean» нельзя использовать для удаления всех промежуточных файлов. Поэтому мы рекомендуем создать каталог сборки для компиляции. Все промежуточные файлы будут созданы в каталоге сборки. Когда вам нужно удалить его, вы можете просто очистить каталог. Это так называемый метод внешней компиляции.
5) Скомпилировать
6) Запускаем:
5. Пример второй CMake (несколько файлов)
1) Новый каталог проекта:Папка проекта, используемая для хранения файлов проекта
2) Запишите исходные файлы:
#ifndef __FUNC__ #define __FUNC__ class CFunc < public: CFunc(); ~CFunc(); int Add(int x, int y); >; #endif
#include "../include/Func.h" CFunc::CFunc() < >CFunc::~CFunc() < >int CFunc::Add(int x, int y)
#include "../include/Func.h" #include using namespace std; int main() < CFunc *pFunc = new CFunc(); int nRes = pFunc->Add(10, 20); printf("x + y = %d\n", nRes); return 0; >
3) Напишите CMakeLists.txt:
Создайте новый файл CMakeLists.txt в корневом каталоге и напишите следующее:
# 1.cmake verson, укажите версию cmake cmake_minimum_required(VERSION 3.2) # 2. имя проекта, укажите имя проекта, как правило, соответствует имени папки проекта project(TestAdd) # 3. путь к файлу заголовка, каталог файла заголовка include_directories(include) # 4. исходный каталог, каталог исходных файлов aux_source_directory(src DIR_SRCS) # 5. установить переменную среды, установить переменную среды, все исходные файлы, используемые для компиляции, должны быть помещены сюда, иначе компиляция пройдет, но во время выполнения будут возникать различные проблемы, такие как «ошибка поиска символа xxxxx, неопределенный символ» set(TEST_ADD $) # 6. добавить исполняемый файл, добавить исполняемый файл для компиляции add_executable($ $) # 7. добавить библиотеку ссылок, добавить библиотеку, необходимую для исполняемого файла, например, если мы используем libXLSDKVCN.so (правило именования: lib + name + .so), добавьте имя библиотеки target_link_libraries($ XLSDKVCN)
4) Создайте каталог сборки
5) Скомпилировать
6) Запускаем:
Installing CMake
There are several ways to install CMake, depending on your platform.
Windows
There are pre-compiled binaries available on the Download page for Windows as MSI packages and ZIP files. The Windows installer has an option to modify the system PATH environment variable. If that is not selected during installation, one may manually add the install directory (e.g. C:\Program Files\CMake\bin) to the PATH in a command prompt.
One may alternatively download and build CMake from source. The Download page also provides source releases. In order to build CMake from a source tree on Windows, you must first install the latest binary version of CMake because it is used for building the source tree. Once the binary is installed, run it on CMake as you would any other project. Typically this means selecting CMake as the Source directory and then selecting a binary directory for the resulting executables.
macOS
There are pre-compiled binaries available on the Download page for macOS as disk images and tarballs. After copying CMake.app into /Applications (or a custom location), run it and follow the “How to Install For Command Line Use” menu item for instructions to make the command-line tools (e.g. cmake) available in the PATH. Or, one may manually add the install directory (e.g. /Applications/CMake.app/Contents/bin) to the PATH.
One may alternatively download and build CMake from source as in the following section.
Linux, UNIX
There are pre-compiled binaries available on the Download page for some UNIX platforms. One may alternatively download and build CMake from source. The Download page provides source releases. There are two possible approaches for building CMake from a source tree. If there is no existing CMake installation, a bootstrap script is provided:
./bootstrap make make install
(Note: the make install step is optional, cmake will run from the build directory.)
By default bootstrap will build CMake without any debug or optimization flags. To enable optimizations you will need to specify the CMAKE_BUILD_TYPE option to bootstrap like this: ./bootstrap — -DCMAKE_BUILD_TYPE:STRING=Release
For more options with bootstrap, run ./bootstrap —help .
Or, an existing CMake installation can be used to build a new version:
(Note: the make install step is optional, cmake will run from the build directory.) If you are not using the GNU C++ compiler, you need to tell the bootstrap script (or cmake) which compiler you want to use. This is done by setting the environment variables CC and CXX before running it. For example:
env CC=cc CXX=CC ./bootstrap make make install
Download Verification
Each release on the Download page comes with a file named cmake-$version-SHA-256.txt, where $version is the release version number.
One may use this file to verify other downloads, such as the source tarball. For example:
$ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-SHA-256.txt $ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1.tar.gz $ sha256sum -c --ignore-missing cmake-3.20.1-SHA-256.txt cmake-3.20.1.tar.gz: OK
The SHA-256 file itself can be verified by GPG signature:
$ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-SHA-256.txt.asc $ gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys C6C265324BBEBDC350B513D02D2CEF1034921684 $ gpg --verify cmake-3.20.1-SHA-256.txt.asc cmake-3.20.1-SHA-256.txt
The GPG key C6C265324BBEBDC350B513D02D2CEF1034921684 is a signing subkey whose expiry is updated yearly.