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

Make for windows gnu: makefile — How to install and use «make» in Windows?

GNU Make – при все богатстве выбора альтернативы нет! – Dmitry-Bond

GNU Make – при все богатстве выбора альтернативы нет!

Posted on by dmitrybond

Выбирал конфигурацию для новой build macnine (на Win 2012 R2). А то для многих компонентов до сих пор используем C++ компилятор 1998 года (MS VC++ 6.0).

Front-end-ом точно будет Jenkins. Он бесплатный и ранее уже был опробован. Даже с кастомной скриптовой build procedure он достаточно неплохо совмещается.

Но оставался вопрос – а что использовать как основной сборщик?

  • Maven – для C++ он плохо подходит
  • Ant – тоже не особо
  • MSBuild – вроде выглядит интересно, но для C++ он подтягивает огромную инфраструктуру в которой черт ногу сломит! Также, все эти *.props, *.tasks, *.targets файлы – там же капец как все запутанно и без установки соответствующей инфраструктуры для C++ практически не применим. Например, под CygWin/MINGW как-то все очень сложно…
  • GNU Make – идеально! Там всего 5 файлов копируются на любую машину и оно работает (копировал из MSYS2/MINGW установленного на другом компьютере).

Итого, GNU Make = cтандартность, гибкость, универсальность, переносимость. Т.е. и для Windows и для Linux один сборочный инструмент.

По факту выходит – как Microsoft не старалось, но старенький GNU Make они пока не переплюнули.

Кстати, оказывается есть версия адаптированная именно для Win32 (http://gnuwin32.sourceforge.net/packages/make.htm).

Если копировать GNU make из MSYS2/MINGW, то нужно взять следующие файлы:

  • bash.exe
  • make.exe
  • msys-2.0.dll
  • msys-gcc_s-1.dll
  • msys-iconv-2.dll
  • msys-intl-8.dll
  • sh.exe

При этом make.exe можно переименовать в gmake.exe и еще скопировать в gmake421m.exe.

Версия утилиты

GNU Make 4.2.1
Built for i686-pc-msys
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Для справки: в последнюю сборку CentOS 7 Linux входит GNU Make 3.82, т.е. номер версии чуть ниже чем версия для Windows.

Потом нужно в Makefile прописать путь к sh.exe (в моем случае “c:/tools”):

SHELL = c:/tools/sh

И после этого можно это использовать.

Там даже цветовая раскраска поддерживается с помощью ANSI-команд:

BUILD_COLORS ?= 1

ifeq ($(strip $(BUILD_COLORS)),)
 clDefault=
 clGccErrors=
 clProErrors=
 clHeadLine=
 clInfoLine=
 clHighlight=
 clSqlConv=
else
 clDefault=<[0;37m
 clGccErrors=<[0;31m
 clProErrors=<[0;35m
 clHeadLine=<[0;33m
 clInfoLine=<[0;32m
 clHighlight=<[0;36m
 clSqlConv=<[0;32m
endif

(прим. : ясное дело, что вместо “<” должен быть символ “\x1B”)

И потом можно делать так:

all: t1 t2 t3 t4
 @echo "$(clGccErrors)Target[ALL]...$(clDefault)"

t1:
 @echo "$(clHeadLine)Target[T1]->head line...$(clDefault)"

t2:
 @echo "$(clHighlight)Target[T2]->head line...$(clDefault)"

А если копировать GNU Make из CygWin тогда нужно зацепить немного больше файлов:

  • bash.exe
  • cygcrypt-0.dll
  • cygffi-6.dll
  • cyggc-2.dll
  • cyggcc_s-seh-1.dll
  • cyggmp-10.dll
  • cygguile-2.0-22.dll
  • cygiconv-2.dll
  • cygintl-8.dll
  • cygltdl-7.dll
  • cygncursesw-10.dll
  • cygreadline7.dll
  • cygunistring-2.dll
  • cygwin1.dll
  • make.exe
  • sh.exe

И тоже стоит скопировать в gmake.exe и сделать еще копию с именем gmake521cyg.exe для экспериментов по сравнению версий.

Like this:

Like Loading…

Posted in Computers and Internet, Development and Integration, Software
Search for:

Enter your email address to follow this blog and receive notifications of new posts by email.

Email Address:

Join 38 other subscribers

  • Что такое “счастье”
  • Идея: программа Групповой Суфлер
  • Что называют “любовью”
  • GitHub Actions: наконец-то настроил сборку…
  • MKS-to-GIT миграция успешно завершена…
Archives Select Month February 2023  (1) January 2023  (2) December 2022  (1) September 2021  (1) July 2021  (1) November 2020  (1) July 2020  (2) April 2020  (2) January 2020  (1) November 2019  (2) August 2019  (2) June 2019  (1) January 2019  (1) November 2018  (1) September 2018  (1) August 2018  (2) July 2018  (1) May 2018  (2) April 2018  (1) December 2017  (3) November 2017  (1) October 2017  (4) September 2017  (3) August 2017  (2) July 2017  (2) June 2017  (3) May 2017  (2) March 2017  (4) January 2017  (2) November 2016  (1) October 2016  (3) September 2016  (1) August 2016  (2) July 2016  (3) June 2016  (2) May 2016  (1) April 2016  (5) March 2016  (1) February 2016  (6) January 2016  (3) December 2015  (1) November 2015  (1) October 2015  (2) September 2015  (3) August 2015  (4) July 2015  (7) June 2015  (6) May 2015  (4) April 2015  (7) March 2015  (8) February 2015  (5) January 2015  (3) December 2014  (4) November 2014  (5) October 2014  (5) September 2014  (4) August 2014  (1) July 2014  (3) June 2014  (7) May 2014  (6) April 2014  (2) March 2014  (13) February 2014  (5) January 2014  (12) December 2013  (8) November 2013  (8) October 2013  (11) September 2013  (16) August 2013  (16) July 2013  (8) June 2013  (6) May 2013  (7) April 2013  (8) March 2013  (10) February 2013  (12) January 2013  (16) December 2012  (10) November 2012  (14) October 2012  (21) September 2012  (15) August 2012  (21) July 2012  (5) June 2012  (16) May 2012  (16) April 2012  (16) March 2012  (10) February 2012  (22) January 2012  (14) December 2011  (18) November 2011  (21) October 2011  (11) September 2011  (8) August 2011  (8) July 2011  (5) June 2011  (12) May 2011  (9) April 2011  (7) March 2011  (16) February 2011  (8) January 2011  (7) December 2010  (5) November 2010  (18) October 2010  (10) September 2010  (10) August 2010  (16) July 2010  (17) June 2010  (14) May 2010  (8) April 2010  (22) March 2010  (13) February 2010  (35) January 2010  (45) December 2009  (25) November 2009  (24) October 2009  (18) September 2009  (8) August 2009  (12) July 2009  (10) June 2009  (6) May 2009  (3) April 2009  (4) March 2009  (6) February 2009  (2) January 2009  (2) December 2008  (1) August 2008  (2) May 2008  (2) January 2008  (1)CategoriesSelect CategoryComputers and Internet  (547)   Hardware  (79)   Software  (297)Development and Integration  (180)Еда и напитки  (4)Здоровье  (2)Игры  (8)Книги  (6)Компьютеры и Интернет  (20)Музыка  (2)Новости и политика  (78)Путешествия  (5)Развлечения  (10)Увлечения  (5)Entertainment  (2)Finances  (1)Idea  (3)Just a Life  (200)   Байки  (5)   Вождение  (7)   History  (24)   Home  (10)   Philosophy  (48)   Sport  (1)   Tools  (2)   Work  (13)Law  (2)Learning  (7)Money  (2)Music  (4)Nature  (9)Photo  (7)Themes  (5)Uncategorized  (23)Wanted  (3)
  • Register
  • Log in
  • Entries feed
  • Comments feed
  • WordPress. com

Make для Windows

Make для Windows

Make: утилита GNU make для поддержки групп программ

3,81

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

Возможности производителя

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

http://www.gnu.org/software/make

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

6 Настройка

6
Description
Download Size Last change Md5sum
• Complete package, except sources   Setup   3384653   25 Ноябрь 2006 г.   8ae51379d1f3eef8360df4e674f17d6d
• Источники  
  1252948   25 November 2006   b896c02e3d581040ba1ad65024bbf2cd
 
• Binaries   Zip   495645   25 November 2006   3521948bc27a31d1ade0dcb23be16d49
• Зависимости   Zip   708206   25 November 2006   d370415aa924fa023411c4099ef84563
• Documentation   Zip   2470575   25 November 2006   43a07e449d4bab3eb3f31821640ecab7
• Источники   Почтовый индекс   2094753   25 November 2006   8bed4cf17c5206f8094f9c96779be663

You can also download the files from the GnuWin32 страница с файлами.

Ты можешь монитор новые релизы порта этого пакета.

Общие инструкции по установке

Справка GnuWin32 (запросы функций, ошибки и т. д.)

Требования к работающим приложениям, кроме внешних такие как msvcrt.dll, perl и т. д., включены в Программа установки и ZIP-файл зависимостей.
  • Win32, т.е. MS-Windows 95/98/ME/NT/2000/XP/2003 с msvcrt.dll и msvcp60.dll. Если msvcrt.dll или msvcp60.dll отсутствует в вашей Windows/Системе папку, получить их из Майкрософт, или (только msvcrt.dll) путем установки Internet Explorer 4.0 или выше.
  • libintl3
  • либиконв2

сделать, 3.81, gnu, win32, win32s, win64, gnuwin32, i386, ia64, x86-64, gnuwin64,gnuwin,mswindows,ms-windows,windows,95,98,me,nt,2000,2k,xp,2003,vista

Сделать — Проект GNU — Фонд свободного программного обеспечения

GNU Make — это инструмент, контролирующий генерацию исполняемых файлов и других неисходные файлы программы из исходных файлов программы.

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

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

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

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

Содержание

  • Скачать
  • Документация
  • Списки рассылки
  • Участие
  • Лицензирование

Make Rules and Targets

Правило в make-файле сообщает Make, как выполнить ряд команды для создания файла target из исходных файлов. Он также указывает список зависимостей целевого файла. Этот список должен включать все файлы (будь то исходные файлы или другие целевые файлы). которые используются в качестве входных данных для команд в правиле.

Вот как выглядит простое правило:

цель: зависимости...
          команды
          ...
 

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

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

Преимущества GNU Make

GNU Make имеет множество мощных функций для использования в make-файлах, помимо есть другие версии Make. Он также может регенерировать, использовать, а затем удалять промежуточные файлы, которые не нужно сохранять.

GNU Make также имеет несколько простых и очень удобных функций. Для например, -o file опция, которая говорит «притвориться, что исходный файл файл не изменился, хотя и изменился.» Это чрезвычайно полезно, когда вы добавляете новый макрос в заголовочный файл. В большинстве версий Make предполагается, что они должны перекомпилировать все исходные файлы, использующие заголовочный файл; но GNU Make дает вам возможность избежать перекомпиляции, в случае, если вы знаете свое изменение в заголовочный файл не требует этого.

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

Makefiles And Conventions

Мы разработали соглашения о том, как писать Makefiles, которые все Пакеты GNU должны следовать. Это хорошая идея, чтобы следовать этим соглашения в вашей программе, даже если вы не хотите, чтобы она была GNU программное обеспечение, так что пользователи смогут собрать ваш пакет просто как и многие другие пакеты, и не нужно будет изучать что-то особенное прежде чем сделать это.

Эти условные обозначения находятся в главе «Соглашения Makefile» (147 тыс. символов) GNU Coding Стандарты (147 тыс. символов).

Скачать

Сделать можно найти на главном ftp-сервере GNU (скачать Make через HTTPS, скачать Make через HTTP или скачать Make через FTP), и его зеркала; пожалуйста использовать зеркало если возможно.

Документация

Документация для Делать находится в сети, как и документация для большинства Программное обеспечение GNU. Доступ к нему также можно получить, запустив информация сделать или man make , или взглянув на /usr/доля/doc/сделать/ , или аналогичные каталоги в вашей системе. Краткий обзор доступен по запуск make --help .

Списки рассылки

Марка имеет следующие списки рассылки:

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

Объявления о Делать и большинство других программ GNU сделаны на информация-гну список рассылки (архив).

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

Участие

Разработка Делать, и GNU в целом, это добровольная работа, и вы можете внести свой вклад. Для информацию, пожалуйста, прочтите Как помочь GNU. Если бы ты хотел бы принять участие, это хорошая идея, чтобы присоединиться к рассылке обсуждения список (см. выше).

Средства разработки
Для источников разработки, систем отслеживания проблем и других информацию, см.

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

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