Как изменить встроенные правила make

312
Esteban Crespi

Я хотел бы знать, есть ли способ изменить правила, автоматически применяемые make, когда make-файла нет. Например, если вы пишете make fooв каталог, содержащий названный файл, foo.cppон выполняется, g++ foo.cpp -o foo даже если makefileв каталоге его нет.

Я хотел бы изменить их в соответствии со своими потребностями, сказать что-то вроде, g++ foo.cpp -o foo --std=c++11 -W -O2 -I .... но также добавить новые правила для других расширений, таких как .c, .java или .tex

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

Я работаю в основном с Mingw и Cygwin.

0

1 ответ на вопрос

1
Daniel B

Согласно инструкции, правило на самом деле:

нет производится автоматически n.cc, n.cppили n.Cс рецептом формы « $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c». Мы рекомендуем вам использовать суффикс ' .cc' для исходных файлов C ++ вместо ' .C'.

Таким образом, уходит либо настройка переменных среды (например, in ~/.bashrc), либо просто создание Makefile, который переопределяет это правило.

Используйте make -pв каталоге без Makefile, чтобы узнать все настройки по умолчанию и встроенные правила.

Спасибо за Ваш ответ. Список правил очень полезен, поскольку позволяет мне адаптировать его поведение к моим потребностям. Я все еще удивлен, что нет способа переопределить эти правила или удалить их. Esteban Crespi 7 лет назад 0
Вы можете переопределить их. Используя Makefile. Вы также можете отключить их, используя `--no-builtin-rules`. Это все в руководстве. Daniel B 7 лет назад 0