#Что означает ошибка
make: *** No targets specified and no makefile found. Stop.
Две близкие ошибки: make: command not found (утилита make не установлена) и make: *** No targets specified and no makefile found. Stop. (в текущей папке нет Makefile). Причины и решения разные, поэтому определите, какая у вас.
Для проектов на CMake или autotools Makefile создаётся на предыдущем шаге.
Проверьте содержимое папки и порядок команд.
make ищет Makefile в текущем каталоге. Ошибка означает, что вы не в том каталоге либо проект требует предварительной конфигурации (configure, cmake).
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не тот каталог | Нет Makefile. | Перейдите. |
| Нужна конфигурация | configure/cmake. | Запустите. |
| Другое имя | GNUmakefile. | Укажите -f. |
| Нет make | Не установлен. | Установите. |
#Пошаговое решение
- Проверьте make --versionНа Linux откройте терминал в каталоге проекта и выполните
make --version. Если увидите номер версии GNU Make, инструмент установлен и ошибкаNo targets specified and no makefile foundсвязана не с его отсутствием, а с отсутствующим файлом правил в текущем каталоге. Еслиmakeне найден, переходите к установке пакета через менеджер вашей ОС, учитывая корпоративные ограничения. - Установите build-essential или аналогЕсли
makeдействительно отсутствует, в Debian/Ubuntu администратор может выполнитьsudo apt updateиsudo apt install make(илиbuild-essential, если нужны также компиляторы). В macOS обычно достаточно Xcode Command Line Tools (xcode-select --install). Эти действия нужны только если отсутствует сама программа; установка компилятора не создаёт Makefile автоматически. - Проверьте файлы в папкеВ терминале выполните
pwd, затемls -laи найдите файлMakefile,makefileилиGNUmakefileименно в текущей папке. Если он лежит в подкаталоге, перейдите командойcd реальный_каталогили укажите путьmake -C каталог. Если есть лишьCMakeLists.txt,configureили инструкция сборки в README, выберите соответствующую систему генерации, не запускайте все команды подряд. - Сгенерируйте MakefileЕсли проект использует CMake, находясь в его корне (там есть
CMakeLists.txt), выполнитеcmake -S . -B build, затемcmake --build build; CMake создаст файлы для выбранного генератора вbuild. Для Autotools используйте./configureлишь если такой исполняемый сценарий есть и README рекомендует его. После успешной генерации выполнитеmakeименно в папке с Makefile, а не наугад в корне. - Проверьте табуляции и окончания строкСообщение
missing separator— ДРУГАЯ ошибка, возникающая уже при чтении Makefile. Если после появления файла встретилось именно оно, откройте Makefile в редакторе и проверьте, что строка команды правила начинается с настоящего символа табуляции (для традиционного Make), а не пробелов. Исправьте только проблемную строку и повторитеmake. Если исходное сообщение всё ещёno makefile found, правка табуляций бессмысленна. - Удалён безусловный запуск ./configure && makeLinux · Терминал (Bash)КомандаУдалён безусловный запуск ./configure && make
# Безопасная проверка рабочей директорииpwdls -la# ./configure запускайте только если он существует и указан в README
#make не найден
Установите инструменты: Debian/Ubuntu — sudo apt install build-essential; Fedora/Rocky — sudo dnf groupinstall "Development Tools"; Arch — sudo pacman -S base-devel; macOS — xcode-select --install; Windows — MSYS2 (pacman -S make), Chocolatey (choco install make) или mingw32-make. Проверка: make --version.
#Нет Makefile
Выведите содержимое: ls -la. Если есть CMakeLists.txt, сначала cmake -S . -B build, затем cmake --build build или make -C build. Если есть configure, выполните ./configure && make; если есть только configure.ac, autoreconf -i и затем ./configure. Если файл называется иначе, укажите: make -f MyMakefile. Убедитесь, что вы в корне проекта (pwd).
#Другие проблемы
Ошибка *** missing separator — в Makefile вместо табуляции стоят пробелы в строках команд. No rule to make target — отсутствует исходный файл или цель написана неверно. Проверьте окончания строк (CRLF в скриптах Windows): dos2unix Makefile. Для параллельной сборки используйте make -j$(nproc). Список целей: make help (если определён) или grep -E "^[a-zA-Z_-]+:" Makefile.
# В каталоге проекта с CMakeLists.txtcmake -S . -B buildcmake --build build# При Debian/Ubuntu без make: sudo apt install make, только при необходимостиКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.