Ошибка fatal error: ... No such file or directory при первой попытке собрать проект с GitHub почти всегда означает одно: в системе не установлены зависимости, которые автор указал в файле README.md, а вы их пропустили. Именно с чтения документации репозитория и начинается любая успешная сборка — команды make или cmake запускаются только после того, как окружение подготовлено.
В этой статье разберём весь путь: от клонирования репозитория до получения готового исполняемого файла. Инструкции подходят для Windows, Linux и macOS, а типичные ошибки разобраны отдельным разделом.
Шаг 1. Изучите репозиторий перед сборкой
Прежде чем что-либо скачивать, откройте страницу проекта и найдите файл README.md — он отображается прямо на главной странице репозитория. Ищите в нём разделы Build, Installation, Getting Started или Compiling. Именно там автор указывает, какая система сборки используется и какие инструменты понадобятся.
Определить тип проекта можно и по файлам в корне репозитория:
- 🔧
CMakeLists.txt— проект на C/C++, собирается через CMake; - 📦
package.json— проект на JavaScript/TypeScript, нужен Node.js иnpm; - ☕
pom.xmlилиbuild.gradle— Java-проект, сборка через Maven или Gradle; - 🐍
setup.py/pyproject.toml— Python-пакет, устанавливается черезpip; - 🦀
Cargo.toml— проект на Rust, собирается командойcargo build.
Также проверьте вкладку Releases справа на странице репозитория. Возможно, автор уже выложил скомпилированные бинарные файлы, и собирать проект самостоятельно вовсе не потребуется.
Шаг 2. Установите необходимые инструменты
Набор инструментов зависит от языка проекта, но базовый минимум одинаков почти всегда. Вам понадобится Git для скачивания кода и компилятор или интерпретатор соответствующего языка.
| Тип проекта | Необходимые инструменты | Команда проверки |
|---|---|---|
| C / C++ | Git, CMake, компилятор (GCC, MSVC, Clang) | cmake --version |
| JavaScript / TypeScript | Git, Node.js (включает npm) | node --version |
| Java | Git, JDK, Maven или Gradle | java -version |
| Rust | Git, Rustup (cargo входит в комплект) | cargo --version |
| Python | Git, Python, pip | python --version |
На Windows для сборки C++-проектов обычно ставят Visual Studio с рабочей нагрузкой «Разработка классических приложений на C++» либо пакет Build Tools for Visual Studio. На Linux достаточно установить метапакет build-essential (в Debian/Ubuntu) через пакетный менеджер. Точный список зависимостей всегда сверяйте с README конкретного проекта — он может требовать дополнительные библиотеки.
⚠️ Внимание: версии инструментов имеют значение. Проект, собранный под Node.js 18, может не собраться на более старой версии. Требования к версиям ищите в README или в файлах конфигурации проекта.
Шаг 3. Клонируйте репозиторий
Скачивать код нужно через Git, а не кнопкой «Download ZIP»: архив не содержит истории и подмодулей, из-за чего сборка иногда ломается. Откройте терминал и выполните:
git clone https://github.com/автор/проект.git
cd проект
Если в README упоминаются submodules (подмодули), клонируйте с их рекурсивной загрузкой:
git clone --recurse-submodules https://github.com/автор/проект.git
Уже склонировали без подмодулей? Их можно догрузить командой git submodule update --init --recursive из папки проекта.
Шаг 4. Соберите проект: универсальные сценарии
Дальнейшие действия зависят от системы сборки. Ниже — самые распространённые сценарии, которые покрывают большинство репозиториев.
CMake (C/C++). Классическая последовательность выглядит так:
mkdir build
cd build
cmake ..
cmake --build .
На Windows вместо cmake --build . можно открыть сгенерированный файл решения .sln в Visual Studio и собрать его через интерфейс.
Node.js. Сначала устанавливаются зависимости, затем запускается скрипт сборки:
npm install
npm run build
Maven (Java). Одна команда скачает зависимости и соберёт jar-файл в папку target:
mvn clean package
Rust. Готовый бинарник появится в каталоге target/release:
cargo build --release
☑️ Чек-лист перед запуском сборки
Шаг 5. Найдите и проверьте результат сборки
Готовый файл обычно лежит в отдельной папке: build, dist, target или bin. Ищите исполняемый файл (.exe на Windows, бинарник без расширения на Linux/macOS), .jar для Java-проектов или установочный пакет.
Запустите программу из терминала — так вы сразу увидите сообщения об ошибках, если чего-то не хватает. Для библиотек результатом сборки будут файлы .dll, .so или .a, которые подключаются к другим проектам.
Типичные ошибки и их решение
Даже при правильной последовательности действий сборка может завершиться ошибкой. Разберём самые частые случаи.
- 🚫
command not found/ «не является командой» — инструмент не установлен или не добавлен в переменную окруженияPATH. Переустановите его и перезапустите терминал. - 📁
No such file or directoryдля заголовочного файла — не установлена библиотека-зависимость. Ищите её точное имя в README. - 🧩 Ошибки про подмодули или пустые папки внешних библиотек — выполните
git submodule update --init --recursive. - 🔢 Ошибки несовместимости версий — проверьте, какая версия компилятора или SDK требуется проекту, и сравните со своей.
⚠️ Внимание: не копируйте первые попавшиеся команды из форумов, не разобравшись, что они делают. Команды с
sudoили меняющие системные файлы могут навредить системе. Сначала читайте текст ошибки целиком — обычно в нём уже указано, чего не хватает.
Если ошибка не гуглится, откройте раздел Issues в репозитории — велика вероятность, что с той же проблемой уже кто-то сталкивался, и там есть готовое решение. При создании нового вопроса прикладывайте полный лог сборки и информацию о вашей системе.
Что делать, если проект давно не обновлялся
Проверьте дату последнего коммита и открытые Issues. Старые проекты часто требуют устаревших версий компиляторов и библиотек. Решения: установить старую версию инструментария в отдельное окружение (например, через Docker или виртуальную машину), поискать активный форк проекта во вкладке Forks или найти современную альтернативу.
FAQ: частые вопросы о сборке проектов с GitHub
Обязательно ли компилировать проект самому?
Нет. Сначала проверьте вкладку Releases — многие авторы публикуют готовые установщики и бинарные файлы. Самостоятельная сборка нужна, если релизов нет, вы хотите изменить код или вам требуется версия под нестандартную платформу.
Чем клонирование отличается от скачивания ZIP-архива?
ZIP-архив содержит только снимок файлов без истории Git и без подмодулей. Проекты с подмодулями из архива чаще всего не собираются. Клонирование через git clone — надёжный способ получить полный рабочий код.
Где искать скомпилированный файл после сборки?
Чаще всего в папках build, dist, target или bin внутри каталога проекта. Точное расположение обычно указано в README или видно в последних строках вывода сборки.
Что делать, если в README нет инструкции по сборке?
Определите систему сборки по файлам в корне репозитория: CMakeLists.txt, package.json, pom.xml, Cargo.toml — и используйте стандартные команды для неё. Также загляните в Issues и Pull Requests: там нередко обсуждают сборку.
Можно ли собрать проект на Windows, если инструкция написана для Linux?
Часто да. Варианты: использовать среду WSL (подсистема Windows для Linux), где команды из инструкции выполняются напрямую, либо проверить, поддерживает ли проект кроссплатформенную сборку через CMake. Гарантии нет — всё зависит от конкретного проекта и его зависимостей.