Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698

Почему экзешник make.exe (вернее, его разновидность mingw32-make.exe) принимает неизвестные параметры?

13.10.2014, 20:46. Показов 5624. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! У меня есть одна из сборок mingw, а там, как известно файл make.exe отсутствует, а вместо него есть файл mingw32-make.exe

Суть в чём. Имеем папку в ней сырец main.cpp такого содержания:

C++
1
2
3
4
//main.cpp
int main()
{
}
В этой же папке Makefile.win, его содержание приведу лишь при необходимости. Скажу лишь, что он сгенерирован одной из IDE, которой я пользуюсь и довольно-таки стандартен.

Компилю main.cpp с помощью mingw32-make.exe
Bash
1
mingw32-make.exe -f Makefile.win
Всё ОК, на выходе main.exe

А теперь ВТОРОЙ РАЗ компилю main.cpp с помощью mingw32-make.exe, следите за руками:
Bash
1
mingw32-make.exe -f Makefile.win clean all
Добавились параметры clean all, они нужны, поскольку в рассматриваемом папке УЖЕ присутствует main.exe (после первой компиляции)

И всё ничего, но таких параметров (clean all) у mingw32-make.exe просто напосто нет!
Вот вывод mingw32-make.exe -h
Usage: mingw32-make.exe [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
Environment variables override makefiles.
--eval=STRING Evaluate STRING as a makefile statement.
-f FILE, --file=FILE, --makefile=FILE
Read FILE as a makefile.
-h, --help Print this message and exit.
-i, --ignore-errors Ignore errors from recipes.
-I DIRECTORY, --include-dir=DIRECTORY
Search DIRECTORY for included makefiles.
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
-k, --keep-going Keep going when some targets can't be made.
-l [N], --load-average[=N], --max-load[=N]
Don't start multiple jobs unless load is below N.
-L, --check-symlink-times Use the latest mtime between symlinks and target.
-n, --just-print, --dry-run, --recon
Don't actually run any recipe; just print them.
-o FILE, --old-file=FILE, --assume-old=FILE
Consider FILE to be very old and don't remake it.
-p, --print-data-base Print make's internal database.
-q, --question Run no recipe; exit status says if up to date.
-r, --no-builtin-rules Disable the built-in implicit rules.
-R, --no-builtin-variables Disable the built-in variable settings.
-s, --silent, --quiet Don't echo recipes.
-S, --no-keep-going, --stop
Turns off -k.
-t, --touch Touch targets instead of remaking them.
-v, --version Print the version number of make and exit.
-w, --print-directory Print the current directory.
--no-print-directory Turn off -w, even if it was turned on implicitly.
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
--warn-undefined-variables Warn when an undefined variable is referenced.

This program built for i386-pc-mingw32
Report bugs to <bug-make@gnu.org>
, как видно, clean all тут и не пахнет

Так почему же mingw32-make.exe принимает неизвестные параметры? (Сам я их подсмотрел в OllyDbg, приаттачив туда IDE и увидел, какие процессы она порождает по команде "пересроить всё" и с какими параметрами)

В ресурсах подобного рода такие вопросы, понятное дело, не обсуждаются. Спасибо, кто откликнется.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2014, 20:46
Ответы с готовыми решениями:

Компиляция библиотеки через make.exe
Скачал исходный код библиотеки oglft-0.9, скачал make-3.81.exe, не могу понять как скомпилировать, подскажите. В папке есть файлы ...

Параметры команды make
Как правильно написать несколько параметров для команды make? Не получается #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Длина short[] - Почему размер массива внутри make отличается?
Доброе время суток, господа. #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; using namespace std; template...

10
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
13.10.2014, 21:04
clean all - это не опция (option), а цели (targets):
clean - как правило, очистить проект (см свой makefile за подробностями цели clean)
all - собрать (см туда же)
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.10.2014, 21:15  [ТС]
Я считал если что-нибудь эдакое (цели, опции, параметры- да как ни назови) присутствует в командной строке, правильно о них упомянуть по команде -h, а о них ничего не сказано.

Добавлено через 1 минуту
Вот кстати, да, там же присутствует такое слово: [target], так почему же нет раздела
[target]... и описание
Добавлено через 2 минуты
Хотя бы даже из тех соображений, что я как программист, должен знать перечень ВСЕХ целей, чтобы использовать их в своей работе, а я случайно узнал только две (как раз и тянет назвать их опциями, ибо они таковые по сути и есть). Опции же показываются все? Показываются.
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
13.10.2014, 21:17
а ты хотел весь мануал увидеть с -h? поверь там очень много про цели и не только...

Добавлено через 2 минуты
кстати эти цели не есть встроенные, а описанные в makefile'е. залезь в него и увидишь их описание. а называться они могут как угодно. это просто одни из "принятых" названий
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.10.2014, 21:21  [ТС]
Цитата Сообщение от retmas Посмотреть сообщение
а ты хотел весь мануал увидеть с -h? поверь там очень много про цели и не только...
Я трудностей не боюсь. Мне хотя бы увидеть, хоть самые распространённые цели. Вменяемые разработчики так и поступают, например, я где-то видел -h с разным уровнем подробностей. А тут вообще- ноль.

Добавлено через 2 минуты
Цитата Сообщение от retmas Посмотреть сообщение
кстати эти цели не есть встроенные, а описанные в makefile'е. залезь в него и увидишь их описание. а называться они могут как угодно. это просто одни из "принятых" названий
Ну допустим. Сейчас мне IDE сгенерила makefile а если я буду его составлять сам? Мне откуда их брать, чтобы туда написать? Например, параметры командной строки я знаю для g++, где брать. А где брать цели для создания makefile САМОМУ- неизвестно.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.10.2014, 22:35
Открываешь Makefile, смотришь цели. Это и есть аргументы для make. Они выглядят так
Bash
1
goal:
Добавлено через 1 минуту
Цитата Сообщение от kravam Посмотреть сообщение
А где брать цели для создания makefile САМОМУ- неизвестно.
Ты их сам придумываешь. Обычно all означает собрать весь проект. Но ты можешь обозвать ее как угодно, хоть makemepleasallmyproject.

Добавлено через 3 минуты
Примитивный пример Makefile
Code
1
2
makemepleasallmyproject: src.cpp
    g++ -o progname src.cpp
запускаме make
Bash
1
make makemepleasallmyproject
на выходе имеем исполняемый progname
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.10.2014, 22:38  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Открываешь Makefile, смотришь цели. Это и есть аргументы для make. Они выглядят так
Может, я неправильно поставил вопрос? Спрошу по- другому. Представим себе, что я качнул у того же nixmana или ещё где сборку mingw и решил использовать make; где мне брать туториал по составлению mikefila? Мне

В сборках mingw makefila нет! Мне нечего брать за образец!

И что-то мне подсказывает, где-то в недрах mingw и должны быть описаны все эти clean, all и прочая, но где именно?

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
Обычно all
Во-во. Обычно, как правило...

В интернете всё тоже обычно да как правило. А мне нужно точно. По пунктам- для данного mingw32-make.exe makefile пишется по таким-то и таким-то правилам. И пусть эти правила будут самые нестрогие! Но пусть они будут! А их нет...
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.10.2014, 22:51
Цитата Сообщение от kravam Посмотреть сообщение
для данного mingw32-make.exe makefile пишется по таким-то и таким-то правилам.
Нет, не так. Есть общие правила для Makefile. Как называется конкретная утилита, реализующая make не имеет значения. В данном случае она называется mingw32-make.exe (кстати не знаю, что им мешало назвать ее make.exe).
Вот может быть полезно.

Добавлено через 7 минут
Цитата Сообщение от kravam Посмотреть сообщение
Во-во. Обычно, как правило...
это такое же устное правило, как например называть геттеры getField() (или field() в С++ больше принято). Если ты назовешь геттер pullField(), то это будет как минимум странно, но работать то он будет. Здесь тоже самое - обычно цель для сборки всего проекта программист (а скорее всего build master) называет all.
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
14.10.2014, 00:12
Цитата Сообщение от kravam Посмотреть сообщение
И что-то мне подсказывает, где-то в недрах mingw и должны быть описаны все эти clean, all и прочая, но где именно?
Там этого нет.

Цитата Сообщение от kravam Посмотреть сообщение
И пусть эти правила будут самые нестрогие! Но пусть они будут! А их нет...
Makefile - это программа, которая определяет как делать сборку. А утилита make - ее интерпретатор.
Какие цели, команды ты там в makefile напишешь - это твое дело. Разработчик сам определяет какие будут цели, и что эти цели будут выполнять. Синтаксис и общие правила составления makefile`ов для GNU make описаны здесь.

Добавлено через 2 минуты
Цитата Сообщение от Kastaneda Посмотреть сообщение
кстати не знаю, что им мешало назвать ее make.exe
Там есть определенные (небольшие) платформозависимые различия. Настоящий make идет в комплекте с MSYS.
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
14.10.2014, 02:14  [ТС]
DrOffset, а вы не знаете, где взять исходники текстового редактора, которые являются как бы подопытными для авторов книги? На сайте, который они указали

http://savannah.gnu.org/projects/make

их нет
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
14.10.2014, 12:02
kravam, Мне кажется это гипотетический пример. Т.е. реального кода за ним нет. Создай пустые файлы с указанными имeнами и компилируй. В конце концов для make не важно eсть в них реальный код или нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2014, 12:02
Помогаю со студенческими работами здесь

mingw32-make.exe.....
Недавно начал работать с Qt, установил QtSDK... В Creator-е написал простейшую программу &quot;Hello, world!&quot;, попробовал...

Процесс mingw32-make.exe не завершается
При запуске проекта выводит 21:03:00: Выполняются этапы для проекта HelloWorld... 21:03:00: Настройки не изменились, этап qmake...

make / mingw32-make - сравнение скорости в многопоточном режиме (-j)
в MinGW + MSYS имеются такие файлы для сборки программ с помощью Makefile: Alex@tycoon-851de03e /home $ make -v GNU Make 3.81 ...

make exe...
Доброго времени суток! Прошу извенения если не по теме. У меня есть файл a.bas, Qbasic 4.5. Как можно вручную создать exe (я хочу сделать...

Mingw32-make (error 2)
Здравствуйте, хотел собрать exe-файл. Сначала воспользовался qmake, создались makefile'ы. Потом воспользовался mingw32-make. Результаты,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru