make: *** No targets specified and no makefile found

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

make ищет Makefile в текущем каталоге. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. make не найден
  5. Нет Makefile
  6. Другие проблемы

#Что означает ошибка

Сообщение
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Не установлен.Установите.

#Пошаговое решение

  1. Проверьте make --versionНа Linux откройте терминал в каталоге проекта и выполните make --version. Если увидите номер версии GNU Make, инструмент установлен и ошибка No targets specified and no makefile found связана не с его отсутствием, а с отсутствующим файлом правил в текущем каталоге. Если make не найден, переходите к установке пакета через менеджер вашей ОС, учитывая корпоративные ограничения.
  2. Установите build-essential или аналогЕсли make действительно отсутствует, в Debian/Ubuntu администратор может выполнить sudo apt update и sudo apt install make (или build-essential, если нужны также компиляторы). В macOS обычно достаточно Xcode Command Line Tools (xcode-select --install). Эти действия нужны только если отсутствует сама программа; установка компилятора не создаёт Makefile автоматически.
  3. Проверьте файлы в папкеВ терминале выполните pwd, затем ls -la и найдите файл Makefile, makefile или GNUmakefile именно в текущей папке. Если он лежит в подкаталоге, перейдите командой cd реальный_каталог или укажите путь make -C каталог. Если есть лишь CMakeLists.txt, configure или инструкция сборки в README, выберите соответствующую систему генерации, не запускайте все команды подряд.
  4. Сгенерируйте MakefileЕсли проект использует CMake, находясь в его корне (там есть CMakeLists.txt), выполните cmake -S . -B build, затем cmake --build build; CMake создаст файлы для выбранного генератора в build. Для Autotools используйте ./configure лишь если такой исполняемый сценарий есть и README рекомендует его. После успешной генерации выполните make именно в папке с Makefile, а не наугад в корне.
  5. Проверьте табуляции и окончания строкСообщение missing separator — ДРУГАЯ ошибка, возникающая уже при чтении Makefile. Если после появления файла встретилось именно оно, откройте Makefile в редакторе и проверьте, что строка команды правила начинается с настоящего символа табуляции (для традиционного Make), а не пробелов. Исправьте только проблемную строку и повторите make. Если исходное сообщение всё ещё no makefile found, правка табуляций бессмысленна.
  6. Удалён безусловный запуск ./configure && make
    Linux · Терминал (Bash)Команда
    Удалён безусловный запуск ./configure && make
    # Безопасная проверка рабочей директории
    pwd
    ls -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.

Linux · Терминал (Bash)С осторожностью
Пакеты компиляторов не предлагаются как универсальное исправление отсутствующего Makefile
# В каталоге проекта с CMakeLists.txt
cmake -S . -B build
cmake --build build
# При Debian/Ubuntu без make: sudo apt install make, только при необходимости

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.