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

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

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

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

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

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

решение1

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

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

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

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

Связанный контент