
Я хотел бы узнать, есть ли способ изменить правила, применяемые автоматически 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, чтобы изучить все значения по умолчанию и встроенные правила.