Как запустить makefile в Windows

Обновлено: 05.07.2024

Make – это инструмент, который управляет созданием исполняемых файлов и других неисходных файлов программы из исходных файлов программы. Make получает информацию о том, как построить вашу программу, из файла makefile, в котором перечислены все файлы, не являющиеся исходными кодами, и способы их вычисления из других файлов. Когда вы пишете программу, вы должны написать для нее make-файл, чтобы можно было использовать Make для сборки и установки программы.

<УЛ>
  • Make позволяет конечному пользователю собрать и установить ваш пакет, не зная подробностей того, как это делается, потому что эти подробности записаны в предоставленном вами make-файле.
  • Make автоматически определяет, какие файлы необходимо обновить, исходя из того, какие исходные файлы были изменены. Он также автоматически определяет правильный порядок обновления файлов в случае, если один не исходный файл зависит от другого не исходного файла. В результате, если вы измените несколько исходных файлов, а затем запустите Make, вам не потребуется перекомпилировать всю вашу программу. Он обновляет только те неисходные файлы, которые прямо или косвенно зависят от исходных файлов, которые вы изменили.
  • Make не ограничивается каким-либо конкретным языком. Для каждого не исходного файла в программе makefile указывает команды оболочки для его вычисления. Эти команды оболочки могут запускать компилятор для создания объектного файла, компоновщик для создания исполняемого файла, ar для обновления библиотеки или TeX или Makeinfo для форматирования документации.
  • Make не ограничивается созданием пакета. Вы также можете использовать Make для управления установкой или удалением пакета, создания для него таблиц тегов или чего-либо еще, что вы хотите делать достаточно часто, чтобы стоило записать, как это сделать.
  • Главная страница

    Скачать

    Если вы загружаете программу установки пакета, все требования для запуска приложений, такие как библиотеки динамической компоновки (DLL) из зависимостей, перечисленных ниже в разделе «Требования», уже включены. Если вы загружаете пакет в виде Zip-файлов, вам необходимо самостоятельно загрузить и установить ZIP-файл зависимостей. Однако файлы разработчика (файлы заголовков и библиотеки) из других пакетов не включены; поэтому, если вы хотите разрабатывать свои собственные приложения, вы должны отдельно установить необходимые пакеты.

    Я скачал несколько демонстраций, и они поставляются с файлами Makefile.win и Makefile.sgi. Как я могу запустить их в Windows, чтобы скомпилировать демо-версии?

    Должен отметить, что я больше увлекаюсь Linux, но прямо сейчас мне нужно использовать Windows, поэтому я немного не в курсе.

    17 ответов 17

    Если у вас есть Visual Studio, запустите командную строку Visual Studio из меню "Пуск", перейдите в каталог, содержащий Makefile.win, и введите следующее:

    Вы также можете использовать обычную командную строку и запустить vsvars32.bat (c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools for VS2008). Это настроит среду для запуска nmake и поиска инструментов компилятора.

    Хорошо, я понял. Но, конечно, он не будет компилироваться из-за ошибок. Просто моя удача. Но спасибо.

    Для пользователей VS2012 командная строка называется "Командная строка разработчика для VS2012". Пуск--> Поиск--> "команда" - вот как я это нашел.

    @NSD: Вы можете попробовать другие "make", но такие файлы обычно пишутся на диалекте nmake и в предположении, что VS установлен и находится на пути. Возможно, вам будет достаточно бесплатного VS Express.

    @MarceloCantos Я новичок в Linux и в разработке. Что делать, если у меня есть файл .am и .mk. У меня нет файла .win. Я пытаюсь сделать wget, кстати.

    Вы можете установить GNU make с помощью Chocolatey, хорошо поддерживаемого менеджера пакетов, который добавит make к глобальному пути и запустится во всех CLI (powershell, git bash, cmd и т. д.), что сэкономит вам массу времени в обоих случаях. техническое обслуживание и первоначальная настройка для запуска.

    Установите диспетчер пакетов Chocolatey для Windows,
    совместимый с Windows 7+ / Windows Server 2003+

    Запустить choco install make

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

    Вы прекрасны, большое спасибо. Выполняется так, как если бы вы пробовали Makefile в родной среде Linux, но в Windows! Были проблемы с make с использованием WSL для приложения Java с графическим интерфейсом, но это заставило его работать с помощью PowerShell.

    Познакомьтесь с cygwin, похожей на Unix средой для Windows

    cygwin хорошо сработал для меня!. Мне просто нужно было проверить во время установки некоторые пакеты в Devel: «make», а также «gcc», как описано здесь.

    Я также рекомендую установить cygwin с помощью Chocolatey, поэтому команда для получения make выглядит следующим образом: choco install make --source=cygwin

    Если вы установили его с помощью choco, добавьте эту строку (без кавычек) в переменную вашего пути в системных переменных "C:\tools\cygwin\bin"

    Познакомьтесь с утилитой make (для Windows) от GnuWin, которая обеспечивает собственный порт для Windows (не требуя полной среды выполнения, такой как Cygwin)

    Если у вас есть winget, вы можете установить его через интерфейс командной строки следующим образом:

    Кроме того, не забудьте добавить путь установки в системный PATH :


    Вы также можете рассмотреть возможность изменения каталога установки, чтобы избежать пробелов и круглых скобок, поскольку они могут вызвать проблемы с запуском CLI

    Вот мой быстрый и временный способ запустить Makefile

    • скачать make с SourceForge: gnuwin32
    • установить
    • перейти в папку установки
    • скопируйте все файлы из корзины в папку, содержащую Makefile
    • откройте cmd(вы можете сделать это, щелкнув правой кнопкой мыши с Shift) в папке, содержащей Makefile, и запустите

    Кроме того, после команды можно добавить аргументы, например


    Вероятно, лучше добавить каталог bin в переменную окружения PATH. Это сделает make.exe доступным из любого места.

    Я думаю, что это делается по умолчанию - по крайней мере, так было, когда я устанавливал gnuwin32. Конечно, копирование файлов в любом случае является плохой практикой.

    Это не делается по умолчанию (или не в моем случае). Добавив его в путь, вы сможете запустить make из папки проекта.

    Если вы устанавливаете Cygwin. Обязательно выберите make в установщике. Затем вы можете запустить следующую команду, если у вас есть Makefile.

    Я попробовал все вышеперечисленное. Что мне помогает:

    1. Загрузите mingw-get.
    2. Настройте его.
    3. Добавьте что-то вроде этого C:\MinGW\bin в переменные среды.
    4. Запустите (!важно) git bash. Power shell, разработчик против cmd, системный cmd и т. д. не помогли.
    5. Введите mingw-get в командной строке.
    6. После ввода mingw-get установите mingw32-make .

    Готово! Теперь вы можете использовать make-команды из любой папки, содержащей Makefile.


    В Visual Studio 2017 мне пришлось добавить эту папку в переменную env пути Windows 10:

    Также есть HostX86

    Я использую набор инструментов MinGW, который предоставляет инструмент сборки mingw32-make, если он есть в ваших системных переменных PATH, в командной строке Windows просто перейдите в каталог, содержащий файлы, и введите эту команду:


    Если это «NMake Makefile», то есть синтаксис и команда совместимы с NMake, он будет изначально работать в Windows. Обычно Makefile.win (суффикс .win) указывает, что это make-файл, совместимый с Windows NMake. Так что вы можете попробовать nmake -f Makefile.win .

    Часто предоставляются стандартные файлы Makefile для Linux, и NMake выглядит многообещающе. Однако по следующей ссылке используется простой Makefile для Linux и объясняются некоторые фундаментальные проблемы, с которыми можно столкнуться. Он также предлагает несколько альтернатив для обработки файлов Makefile Linux в Windows.

    После этого, когда вам нужно, откройте командную строку и запустите vsvars32.bat, чтобы добавить пути ко всем необходимым инструментам Visual Studio в системный путь.

    Затем вы можете вызвать nmake -f makefile.mak

    PS: путь к стандартным инструментам Visual Studio может отличаться в вашей системе. Измените его соответствующим образом.


    Я пытался использовать cygwin и gnuwin, и у меня это не сработало, полагаю, потому что в make-файле использовался в основном специфический код Linux.

    Что сработало, так это использование Ubuntu Bash для Windows 10. Это чудо, если вы пришли из MAC, как в моем случае:

    1. Чтобы установить Ubuntu Bash: https://itsfoss.com/install-bash-on-windows/
    2. Находясь в консоли, чтобы установить make, просто введите "make", и он даст инструкции по его загрузке.

    Дополнительно:

    1. Полезная функция включения копирования/вставки в bash: копирование и вставка в Bash в Ubuntu в Windows.
    2. В моем случае make называется Maven, поэтому мне также нужно установить его: https://askubuntu.com/questions/722993/unable-to-locate-package-maven
    3. Для доступа к файловой системе Windows диск C:, например: "cd /mnt/c/"


    Установите msys2 с make-зависимостью, добавив оба параметра в переменную PATH. (Второй вариант — GNU ToolChain для Windows. Версия MinGW уже включает mingw32-make.)

    Установите Git Bash. Запустите mingw32-make из Git Bash.


    Я предполагаю, что вы добавили mingw32/bin в переменные среды, иначе добавьте его, и я предполагаю, что это компилятор gcc, и у вас есть установщик mingw.

    Первый шаг: загрузите mingw32-make.exe из установщика mingw или сначала проверьте папку mingw/bin, существует ли mingw32-make.exe или нет, в противном случае, не устанавливайте его, переименуйте его в make.exe .

    После переименования его в make.exe просто запустите эту команду в каталоге, где находится makefile. Вместо того, чтобы переименовывать его, вы можете запустить его напрямую как mingw32-make .

    В конце концов, команда — это просто исполняемый файл или программа, мы используем ее имя для запуска программы, мы называем ее командой.


    сообщить об этом объявлении

    Make — невероятно мощный инструмент для управления компиляцией, тестированием и установкой приложений и даже для настройки среды разработки. Он входит в стандартную комплектацию Linux и macOS и поэтому получил широкое распространение. Но как начать работу с Make в Windows?

    Если вы используете подсистему Windows для Linux (WSL/WSL2), вы можете легко установить make с помощью команды sudo apt install make. Однако, если вы хотите, чтобы команда была доступна в обычном терминале, вам необходимо установить версию для Windows.

    Как установить Make в Windows?

      если он еще не установлен
    1. Откройте терминал с повышенными правами (Запуск от имени администратора)
    2. Введите команду choco install make , подтвердите установку, если будет предложено

    Затем убедитесь, что make работает, после чего вы можете начать использовать его в обычном режиме:

    В качестве альтернативы, если вы предпочитаете использовать новый встроенный менеджер пакетов Windows, вы можете использовать эту команду winget:

    Это загрузит программу установки и запустит ее автоматически. Make также будет добавлен в список установленных программ, чтобы вы могли удалить его из раздела Добавить или удалить программы. Вы по-прежнему будете получать следующую ошибку, поскольку программа установки не добавляет make в системный путь:

    Чтобы сделать его исполняемым, вам нужно открыть меню "Пуск" и выполнить поиск по запросу Редактировать системные переменные среды. Нажмите Переменные среды, затем в разделе Системные переменные выберите Путь и нажмите Изменить. Нажмите Создать и вставьте C:\Program Files (x86)\GnuWin32\bin , затем сохраните изменения. Откройте новый терминал и проверьте, работает ли команда.

    На момент написания этой статьи текущая версия, которая устанавливается вместе с winget, — 3.81, поэтому она старше, чем версия от Chocolatey. Вы можете принять это во внимание при выборе метода установки. Вы можете проверить, какая версия будет установлена, с помощью winget show GnuWin32.Make .

    Использование Make в Windows

    С точки зрения синтаксиса нет никакой разницы между Linux и Windows. Вам все еще нужно написать Makefile и определить команды оболочки в разделах с отступом табуляции. Однако сами команды необходимо настроить для измененной операционной системы.

    Обычно в Makefile каждая строка выполняется в отдельной оболочке. Если вам нужно запустить несколько команд из одного и того же экземпляра оболочки, их следует определить в одной строке и объединить в цепочку с оператором &&.

    Приведенный выше пример определяет фальшивые цели Make для настройки виртуальной среды Python и выполнения модульных тестов. Предполагая, что вы установили Python, запуск make test должен выполниться успешно, запуская нулевые модульные тесты, поскольку они не могут быть найдены.

    Если вам нужно, чтобы ваш Makefile поддерживал разные операционные системы, вы также должны определить операционную систему, чтобы иметь возможность запускать разные наборы команд для каждой ОС. С Windows дополнительная сложность заключается в том, что в некоторых случаях (MSYS, MINGW) вам действительно нужно использовать команды Linux.

    В этом ответе о переполнении стека есть одно решение для поиска правильной среды, основанное на том, как системный путь разделен точкой с запятой; в отличие от всех других ОС. Мы можем использовать эту информацию, чтобы наш небольшой пример Makefile изначально работал как в Windows, так и в Linux:

    Команда для активации виртуальной среды отличается в Windows от других операционных систем. Также исполняемый файл Python называется python в Windows, но в Linux вам нужно использовать python3. Конфликтующие команды можно определить как переменные, а затем ссылаться на них в целях.

    Аналогично, если вы компилируете код C или C++, вам нужно использовать gcc или g++ в Linux и cl в командной строке разработчика Windows. Кроме того, аргументы команды должны быть другими.

    Заключение

    Можно использовать Make в Windows, и это не так сложно. Если вы привыкли использовать команды Bash и Linux, переход на команды PowerShell может потребовать некоторой адаптации.Безусловно, самой большой проблемой является написание файлов Makefile, поддерживающих разные операционные системы, но, как мы видели, этого можно добиться с помощью некоторых хитростей.

    Makefile – это текстовый файл, содержащий инструкции по компиляции и компоновке (или сборке) набора файлов с исходным кодом. Программа (часто называемая программой make) читает make-файл и вызывает компилятор, компоновщик и, возможно, другие программы для создания исполняемого файла. Программа Microsoft называется NMAKE.

    Если у вас есть проект makefile, у вас есть следующие варианты редактирования, сборки и отладки в интегрированной среде разработки Visual Studio:

    • Создайте проект makefile в Visual Studio, который использует ваш существующий makefile для настройки файла .vcxproj, который Visual Studio будет использовать для IntelliSense. (У вас не будет всех функций IDE, которые вы получаете с собственным проектом MSBuild.) См. раздел Создание проекта makefile ниже.
    • Используйте мастер создания нового проекта из существующих файлов кода, чтобы создать собственный проект MSBuild из исходного кода. Оригинальный make-файл больше не будет использоваться. Дополнительные сведения см. в разделе Как создать проект C++ из существующего кода.
    • Visual Studio 2017 и более поздние версии: используйте функцию «Открыть папку» для редактирования и сборки проекта makefile «как есть» без участия системы MSBuild. Дополнительные сведения см. в разделе Проекты Open Folder для C++.
    • Visual Studio 2019 и более поздние версии: создайте проект makefile UNIX для Linux.

    Чтобы создать проект makefile с помощью шаблона проекта makefile

    В Visual Studio 2017 и более поздних версиях шаблон проекта Makefile доступен, если установлена ​​рабочая нагрузка C++ Desktop Development.

    Следуйте указаниям мастера, чтобы указать команды и среду, используемые вашим make-файлом. Затем вы можете использовать этот проект для создания кода в Visual Studio.

    По умолчанию проект makefile не отображает файлы в обозревателе решений. В проекте makefile указываются параметры сборки, которые отображаются на странице свойств проекта.

    Выходной файл, который вы указываете в проекте, не влияет на имя, создаваемое сценарием сборки. Он заявляет только о намерении. Ваш make-файл по-прежнему управляет процессом сборки и определяет цели сборки.

    Чтобы создать проект makefile в Visual Studio

    В главном меню Visual Studio выберите «Файл» > «Создать» > «Проект» и введите «makefile» в поле поиска. Если вы видите более одного шаблона проекта, выберите один из вариантов в зависимости от вашей целевой платформы.

    Только для Windows: на странице Параметры конфигурации отладки проекта Makefile укажите информацию о команде, выводе, очистке и перестроении для отладочных и розничных сборок. Выберите «Далее», если вы хотите указать другие параметры для конфигурации выпуска.

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

    Чтобы создать проект makefile в Visual Studio 2015 или Visual Studio 2017

    На стартовой странице Visual Studio введите "makefile" в поле поиска "Новый проект". Либо в диалоговом окне "Новый проект" разверните Visual C++ > "Общие" (Visual Studio 2015) или "Другое" (Visual Studio 2017), а затем выберите "Проект Makefile" на панели "Шаблоны", чтобы открыть мастер проекта.

    На странице "Параметры приложения" укажите информацию о команде, выводе, очистке и восстановлении для отладочных и розничных сборок.

    Нажмите "Готово", чтобы закрыть мастер и открыть только что созданный проект в обозревателе решений.

    Вы можете просматривать и редактировать свойства проекта на его странице свойств. Дополнительные сведения об отображении страницы свойств см. в разделе Настройка компилятора C++ и свойств сборки в Visual Studio.

    Мастер проекта Makefile

    После создания проекта makefile вы можете просматривать и редактировать каждый из следующих параметров на странице Nmake страницы свойств проекта.

    Командная строка сборки: указывает командную строку, которая будет запускаться, когда пользователь выбирает «Сборка» в меню «Сборка». Отображается в поле командной строки Build на странице Nmake страницы свойств проекта.

    Вывод: указывает имя файла, который будет содержать выходные данные для командной строки. По умолчанию этот параметр основан на имени проекта. Отображается в поле «Вывод» на странице Nmake страницы свойств проекта.

    Команды очистки: указывает командную строку, которая будет запускаться, когда пользователь выбирает команду «Очистить» в меню «Сборка». Отображается в поле командной строки «Очистить» на странице Nmake страницы свойств проекта.

    Командная строка перестроения: указывает командную строку, которая будет запускаться, когда пользователь выбирает «Перестроить» в меню «Сборка». Отображается в поле командной строки Rebuild all на странице Nmake страницы свойств проекта.

    Как включить IntelliSense для проектов Makefile

    IntelliSense не работает в проектах makefile, если определенные параметры проекта или параметры компилятора установлены неправильно. Выполните следующие действия, чтобы настроить проекты makefile, чтобы IntelliSense работал должным образом:

    Откройте диалоговое окно "Страницы свойств". Дополнительные сведения см. в разделе Настройка компилятора C++ и свойств сборки в Visual Studio.

    Выберите Свойства конфигурации > Страница свойств NMake.

    Измените свойства в IntelliSense соответствующим образом:

    Установите свойство Preprocessor Definitions, чтобы определить любые символы препроцессора в вашем проекте makefile. Дополнительные сведения см. в разделе /D (определения препроцессора).

    Установите свойство Include Search Path, чтобы указать список каталогов, в которых компилятор будет искать ссылки на файлы, которые передаются директивам препроцессора в вашем проекте makefile. Дополнительные сведения см. в разделе /I (дополнительные каталоги включения).

    Для проектов, созданных с помощью CL.EXE из командного окна, установите переменную среды INCLUDE, чтобы указать каталоги, в которых компилятор будет искать ссылки на файлы, которые передаются директивам препроцессора в вашем проекте makefile.

    Установите свойство ForcedIncludes, чтобы указать, какие файлы заголовков обрабатывать при сборке проекта makefile. Дополнительные сведения см. в разделе /FI (имя принудительно включаемого файла).

    Установите свойство Дополнительные параметры, чтобы указать другие параметры компилятора, которые будут использоваться IntelliSense при анализе файлов C++.

    Нажмите "ОК", чтобы закрыть страницы свойств.

    Используйте команду "Сохранить все", чтобы сохранить измененные настройки проекта.

    В следующий раз, когда вы откроете свой проект makefile в среде разработки Visual Studio, запустите команду Clean Solution, а затем команду Build Solution в вашем проекте makefile. IntelliSense должен правильно работать в среде IDE.

    Читайте также: