如何更改 make 内置规则

如何更改 make 内置规则

我想知道是否有办法在没有 makefile 时更改 make 自动应用的规则。举个例子,如果你make foo在包含名为 的文件的目录中写入,即使目录中 没有该文件foo.cpp,它也会执行 。g++ foo.cpp -o foomakefile

我想改变它们以满足我的需求,比如说, g++ foo.cpp -o foo --std=c++11 -W -O2 -I .... 但也为其他扩展名(如 .c、.java 或 .tex)添加新规则

我知道如何定义新规则,但除了在每个目录中创建一个 makefile 之外,我不知道在哪里指定它们。我想有一些文件包含所有这些内置规则,但我找不到它,也不知道如何用我自己的规则重载它。

我主要使用 Mingw 和 cygwin。

答案1

根据手动的,规则实际上是:

n.cc不会自动从、n.cppn.C使用形式为“ ”的配方生成$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c。我们鼓励您对 C++ 源文件使用后缀“ .cc”,而不是“ .C”。

因此,要么调整环境变量(例如,在~/.bashrc),要么只创建一个覆盖该规则的 Makefile。

在没有 Makefile 的目录中使用make -p来了解所有默认值和内置规则。

相关内容