8-900-374-94-44
[email protected]
Slide Image
Меню

Gnu windows make: makefile — How to install and use «make» in Windows?

Первая программа на Windows. Компилятор g++

Последнее обновление: 30.01.2023

Установка компилятора

Рассмотрим создание первой простейшей программы на C++ с помощью компилятора g++, который на сегодняшний день является одним из наиболее популярных компиляторов для C++, доступен для разных платформ и который распространяется в рамках пакета компиляторов GCC. Более подробную информацию о g++ можно получить на официальном сайте проекта https://gcc.gnu.org/.

Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2. Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)

Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:

После загрузки запустим программу установки:

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить

После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe:

Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:

pacman -S mingw-w64-ucrt-x86_64-gcc

Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менеджеру packman установить пакет mingw-w64-ucrt-x86_64-gcc, который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S).

и после завершения установки мы можем приступать к программированию на языке C++. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\ucrt64\bin, то найдем там все необходимые файлы компиляторов:

В частности, файл g++.exe как раз и будет представлять компилятор для языка С++.

Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:

Нам откроется окно Переменных среды:

И добавим путь к компилятору C:\msys64\ucrt64\bin:

Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:

gcc --version

В этом случае нам должна отобразиться версия компиляторов

Создание первой программы

Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.

Итак, создадим на жестком диске С папку для исходных файлов. А в этой папке создадим новый текстовый файл, который переименуем в hello.cpp. То есть по сути файлы исходного кода на С++ — это обычные текстовые файлы, которые, как правило, имеют расширение cpp.

В моем случае файл hello.cpp находится в папке C:\cpp.

Теперь определим в файле hello.cpp простейший код, который будет выводить строку на консоль:


#include <iostream>        		// подключаем заголовочный файл iostream

int main()							// определяем функцию main
{									// начало функции
	std::cout << "Hello METANIT.COM!";	 // выводим строку на консоль
	return 0;						// выходим из функции
}									// конец функции

Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка

#include <iostream>

Данная строка представляет директиву препроцессора, которая позволяет подключить библиотеку iostream. Эта библиотека нужна для вывода строки на консоль.

Далее идет определение функции main. Функция main должна присутствовать в любой программе на С++, с нее собственно и начинается выполнение приложения.

Функция main состоит из четырех элементов:

  • Тип возвращаемого значения. В данном случае это тип int. Этот тип указывает, что функция должна возвращать целое число.

  • Имя функции. В данном случае функция называется main.

  • Список параметров. После имени функции в скобках идет список параметров. Но в данном случае скобки пустые, то есть функция main не принимает параметров.

  • Тело функции. После списка параметров в фигурных скобках идет тело функции. Здесь и определяются собственно те действия, которые выполняет функция main.

    
    {
    	std::cout << "Hello METANIT.COM!";
    	return 0;
    }

В теле функции происходит вывод строки на консоль. Для обращения к консоли используется стандартный поток вывода std::cout. С помощью оператора << в этот поток (в данном случае фактически на консоль) передается строка символов, которую надо вывести на консоль, то есть «Hello METANIT.COM!».

В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.

После каждой инструкции в языке C++ ставятся точка с запятой.

Каждая строка снабжена комментарием. Все, что написано после двойного слеша // представляет комментарий. Комментарий не учитывается при компиляции приложения, и не является частью программного кода, а служат лишь для его описания. Комментарий позволяет понять, что делает программа.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:

cd C:\cpp

Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello. cpp:

g++ hello.cpp -o hello

Дополнительный необязательный параметр -o hello указывает, что скомпилированный файл будет называться hello.exe. Если не указать этот параметр, то файл будет называться по умолчанию — a.exe.

После выполнения этой команды будет скомпилирован исполняемый файл, который в Windows по умолчанию называется hello.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.

Если вместо командной строки используется оболочка PowerShell, то для запуска файла надо прописать «./hello».

Стоит отметить, что мы можем совместить компиляцию и выполнение следующей командой:

g++ hello.cpp -o hello.exe & hello.exe

НазадСодержаниеВперед

makefile — Как установить и использовать make в Windows?

спросил

Изменено 2 месяца назад

Просмотрено 759 тысяч раз

Я следую инструкциям человека, чей репозиторий я клонировал на свою машину.

Я хочу использовать команду make как часть настройки среды кода, но я использую Windows. Я искал в Интернете, но я мог найти только файл make.exe , файл make-4.1.tar.gz (не знаю, что с ним дальше делать) и инструкция как скачать MinGW (для GNU; но после установки не стал найти любое упоминание о «сделать»).

Как использовать make в Windows без компилятора GNU или связанных пакетов?

  • windows
  • makefile
  • gnu-make

1

make — это команда GNU, поэтому единственный способ получить ее в Windows — это установить версию Windows, подобную предоставленной GNUWin32. В любом случае, есть несколько вариантов его получения:

  1. Самый простой выбор — использовать Chocolatey. Сначала вам нужно установить этот менеджер пакетов. После установки вам просто нужно установить

    make (вам может потребоваться запустить его в командной строке с повышенными правами / администратором):

     шоколад установить сделать
     
  2. Другим рекомендуемым вариантом является установка подсистемы Windows для Linux (WSL/WSL2), поэтому у вас будет выбранный вами дистрибутив Linux, встроенный в Windows 10, где вы сможете установить make , gcc и все инструменты, необходимые для создания программ на C.

  3. Для более старых версий Windows (MS Windows 2000/XP/2003/Vista/2008/7 с msvcrt.dll) можно использовать GnuWin32.

Устаревшей альтернативой был MinGw, но проект, похоже, заброшен, поэтому лучше выбрать один из предыдущих вариантов.

18

GNU make доступен для шоколадки.

  • Установить шоколад отсюда.

  • Затем choco install make .

Теперь вы сможете использовать Make в Windows.
Я пытался использовать его на MinGW, но он должен работать и на CMD.

4

Принятый ответ в целом является плохой идеей, потому что созданный вручную make.exe останется и потенциально может вызвать непредвиденные проблемы. Это фактически ломает RubyInstaller: https://github.com/oneclick/rubyinstaller2/issues/105

Альтернативой является установка make через Chocolatey (как указано @Vasantha Ganesh K)

Другой альтернативой является установка MSYS2 из Chocolatey и использование make из C:\tools\msys64\usr\bin . Если make не устанавливается автоматически с MSYS2, вам необходимо установить его вручную с помощью

pacman -S make (как указано @Thad Guidry и @Luke).

2

Если вы используете Windows 10, она встроена в функцию подсистемы Linux. Просто запустите приглашение Bash (нажмите клавишу Windows, затем введите bash и выберите «Bash в Ubuntu в Windows»), cd в каталог, который вы хотите создать, и введите make .

FWIW, диски Windows находятся в /mnt , например. Диск C:\ — это /mnt/c в Bash.

Если Bash недоступен в меню «Пуск», вот инструкции по включению этой функции Windows (только для 64-разрядной версии Windows):

https://learn.microsoft.com/en-us/windows/wsl/ установка-win10

5

Загрузите make.exe с официального сайта GnuWin32

  • В сеансе загрузки щелкните Полный пакет, кроме исходников .

  • Следуйте инструкциям по установке.

  • После завершения добавьте <каталог установки>/bin/ в переменную PATH.

Теперь вы сможете использовать make в cmd.

3

  1. Установите Msys2 http://www.msys2.org
  2. Следуйте инструкциям по установке
  3. Установить make с помощью $ pacman -S make gettext base-devel
  4. Добавьте C:\msys64\usr\bin\ к вашему пути

В Windows 10 или 11 вы можете запустить команду winget install GnuWin32.Make в командной строке или powershell, чтобы быстро установить его. Затем вы можете использовать команду cmake .

Больше нет необходимости устанавливать choco.

2

Скорее всего, помимо GNU make вам также понадобятся многие из coreutils. Touch, rm, cp, sed, test, tee, echo и тому подобное. Для системы сборки могут потребоваться функции bash, хотя бы потому, что имена временных файлов обычно создаются из идентификатора процесса ($$$$). Без bash не получится. Вы можете получить все с помощью популярных эмуляторов POSIX для Windows:

  • Cygwin (http://www.cygwin.org/) Вероятно, самый популярный и наиболее совместимый с POSIX. Имеет некоторые трудности с путями Windows и работает медленно.
  • GNUWin (http://gnuwin32.sourceforge.net/) Это было хорошо и быстро, но теперь заброшено. bash не предоставляется, но его можно использовать из других пакетов.
  • ezwinports (https://sourceforge.net/projects/ezwinports) Мой текущий фаворит. Быстро и хорошо работает. В нем нет bash, что может быть проблемой для некоторых систем сборки. В качестве обходного пути можно использовать make из ezwinports и bash из Cygwin или MSYS2.
  • MSYS 1.19 заброшен. Работал хорошо, но использовал очень старую марку (3. 86 или около того)
  • MSYS2 (https://www.msys2.org/) Работает хорошо, второе по скорости решение после ezwinports. Хорошее качество, менеджер пакетов (pacman), все инструменты в наличии. Я бы порекомендовал этот.
  • MinGW заброшен? Обычно MSYS 1.19 шел в комплекте с пакетами MinGW, которые содержали старый make.exe. Используйте mingw32-make.exe из пакета, он более актуален.

Обратите внимание, что вы, возможно, не сможете выбрать свою среду. Если система сборки была создана для Cygwin, она может не работать в других средах без модификаций (язык make тот же, но преобразование путей работает по-другому, $(realpath) не работает на путях Windows, файлы DOS bat запускаются как сценарии оболочки и многие подобные проблемы). Если это из Linux, вам может понадобиться настоящий Linux или WSL. Если компилятор работает в Linux, нет смысла устанавливать make для Windows, потому что вам придется запускать и make, и компилятор в Linux. Точно так же, если компилятор работает в Windows, WSL не поможет, потому что в этой среде вы можете запускать только инструменты Linux, а не исполняемые файлы Windows. Это немного сложно!

Я могу предложить пошаговый подход.

  1. Посетите GNUwin
  2. Загрузите программу установки
  3. Следуйте инструкциям и установите GNUWin. Вы должны обратить внимание на каталог, в который устанавливается ваше приложение. (Он понадобится вам позже1)
  4. Следуйте этим инструкциям и добавьте make в переменные среды. Как я уже говорил вам ранее, пришло время узнать, где было установлено ваше приложение. К вашему сведению: каталог по умолчанию — C:\Program Files (x86)\GnuWin32\9.0012 .
  5. Теперь обновите PATH, чтобы включить каталог bin только что установленной программы. Типичный пример того, что можно добавить к пути: ...;C:\Program Files (x86)\GnuWin32\bin

Вы также можете установить scoop, а затем запустить:

 scoop install make
 

Другой вариант: если вы уже установили minGW и добавили папку bin в переменную среды Path, вы можете использовать «mingw32-make» вместо «make».

Вы также можете создать символическую ссылку с "make" на "mingw32-make" или скопировать и изменить имя файла. Я бы не рекомендовал варианты раньше, они будут работать, пока вы не сделаете изменения на minGW.

0

Однажды у меня была такая же проблема. Но я удивлен, что не нашел здесь одного конкретного решения.

Установка из GnuWin32 или через winget хорошие и простые варианты. Но я нашел там только make 3.8.1. В этой версии отсутствует очень важная опция -O , которая корректно обрабатывает вывод при многопоточной компиляции.

choco в настоящее время предлагает версию 4.3. Так что можно было ожидать там свежих версий.

Но есть и возможность самостоятельной компиляции. И если вам нужно установить make , который используется для компиляции, это должно быть допустимым вариантом.

  1. зайдите на https://www.gnu.org/software/make/ и загрузите понравившуюся версию
  2. распакуйте файлы tar. gz (используйте 7zip и распакуйте файл дважды, чтобы получить фактическое содержимое)
  3. перейдите в созданный каталог
  4. открыть командную строку в этом каталоге
  5. запустить build_w32.bat gcc Это запустит компиляцию с помощью компилятора gcc, который вам нужно будет установить заранее. При запуске build_w32.bat без каких-либо опций они пытаются использовать компилятор MSVC. Примечание: меня удивило, что gnu по умолчанию использует не gcc, а MSVC 🙂
  6. игнорировать предупреждения, созданные во время компиляции. Результат все еще должен быть в порядке
  7. получить свежий gnumake.exe из каталога GccRel (при компиляции с помощью gcc)
  8. поместите этот файл куда хотите и переименуйте в make.exe
  9. добавить местоположение в системную переменную %PATH%

Как отмечали другие: эта ручная установка может вызвать конфликты, если у вас есть различные версии make, установленные другими программами.

Одно решение, которое может оказаться полезным, если вы хотите использовать эмулятор командной строки cmder. Вы можете установить установщик пакетов выборочно. Сначала мы устанавливаем chocately в командной строке Windows, используя следующую строку:

 @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
обновить
 

После установки шоколада можно использовать команду choco для установки make. После установки вам нужно будет добавить псевдоним в /cmder/config/user_aliases.cmd. Необходимо добавить следующую строку:

 make="path_to_chocolatey\chocolatey\bin\make.exe" $*
 

После этого Make будет работать в среде cmder.

  1. Установить npm

  2. установить узел

  3. Установить Сделать

     узел установить макияж
    узел установить сделать
     
  4. Если приведенные выше команды отображают какую-либо ошибку, установите Chocolatey(choco)

  5. Откройте cmd, скопируйте и вставьте приведенную ниже команду (команда скопирована с шоколадного URL-адреса)

     @"%SystemRoot%\System32\WindowsPowerShell\v1. 0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System .Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
     

1

makefile - Как использовать GNU Make в Windows?

спросил

Изменено 11 месяцев назад

Просмотрено 181к раз

Я установил MinGW и MSYS, добавил C:\MinGW\bin 9от 0012 до PATH , но я все еще не могу запустить Makefile в Windows cmd . Я хотел бы запустить cmd.exe и там набрать, например, сделать все , но мой cmd говорит, что такой команды нет.

Что мне делать? Я не хочу использовать оболочку MSYS, это не главное. Есть идеи, как использовать GNU Make в Windows cmd, как я могу сделать это в Ubuntu? Меня не интересует Cygwin .

  • windows
  • makefile
  • gnu-make
  • cmd

16

Объяснение

Внутри каталога C:\MinGW\bin находится исполняемый файл mingw32-make.exe , представляющий собой программу make , которую вы пытаетесь запустить. Вы можете использовать ключевое слово mingw32-make и запустить программу make , поскольку вы добавили нужный каталог в системный путь, но это ключевое слово нелегко запомнить.


Решение

Переименование файла с mingw32-make.exe на make.exe позволит вам запустить программу make с использованием ключевого слова make .

Переименование можно выполнить:

  1. Вручную, щелкнув правой кнопкой мыши и переименовав файл.
  2. Выполнив команду , скопируйте c:\MinGW\bin\mingw32-make.exe c:\MinGW\bin\make.exe .

Результат

Теперь, если вы наберете make в командной строке, должно появиться что-то вроде:

 make: *** Цели не указаны и make-файл не найден. Останавливаться.
 

Это означает, что программа make запущена.

3

Я использую GNU Make из проекта GnuWin32, см. http://gnuwin32.sourceforge.net/, но в течение некоторого времени не было никаких обновлений, поэтому я не уверен в статусе этого проекта.

0

Хотя этот вопрос старый, многие пользователи MSYS2 все еще задают его.

В этом году я начал использовать его для замены CygWin и вполне доволен.

Чтобы установить make , откройте оболочку MSYS2 и введите следующие команды:

 # Обновите базу данных пакетов и основные системные пакеты.
пакман -Сью
# Закройте оболочку и откройте снова, если это необходимо
# Обновить снова
пакман -Вс
# Устанавливаем make
пакман -S сделать
# Протестируйте (показать версию)
сделать -v
 

0

В качестве альтернативы, если вы просто хотите установить make, вы можете использовать диспетчер пакетов шоколада для установки gnu make с помощью

choco install make -y

Это решает любые проблемы с путями, которые могут у вас возникнуть.

1

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

setx PATH "%PATH%;c:\MinGW\bin"

Обратите внимание, что вам, вероятно, потребуется открыть новое командное окно для измененного установка пути для вступления в силу.

user1594322 дал правильный ответ, но когда я попробовал, я столкнулся с проблемами администратора/разрешения. Я смог скопировать «mingw32-make.exe» и вставить его, отменив/обходя проблемы администратора, а затем отредактировав копию на «make.exe». На VirtualBox в гостевой системе Win7.

Хотя make доступен как отдельный исполняемый файл ( gnuwin32.sourceforge.net package make ), его использование в надлежащей среде разработки означает использование msys2 .

GIT 2.24 (4 квартал 2019) иллюстрирует, что:

См. Commit 4668931, Commit B35304B, Commit AB7D854, Commit BE5D88E, Commit 5D65AD1, Commit03 04 октября 2019 г.) и закоммитить dbcd970 (30 сентября 2019 г.) Йоханнеса Шинделина ( dscho ).
(объединено Junio ​​C Hamano -- gitster -- в фиксации 6d5291b, 15 октября 2019 г.)

Подписано: Йоханнес Шинделин

Git для Windows делает все возможное, чтобы предоставить среду разработки, которая позволяет создавать Git и запускать набор тестов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *