我想知道是否有办法在没有 makefile 时更改 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)添加新规则
我知道如何定义新规则,但除了在每个目录中创建一个 makefile 之外,我不知道在哪里指定它们。我想有一些文件包含所有这些内置规则,但我找不到它,也不知道如何用我自己的规则重载它。
我主要使用 Mingw 和 cygwin。
答案1
根据手动的,规则实际上是:
n.cc
不会自动从、n.cpp
或n.C
使用形式为“ ”的配方生成$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
。我们鼓励您对 C++ 源文件使用后缀“.cc
”,而不是“.C
”。
因此,要么调整环境变量(例如,在~/.bashrc
),要么只创建一个覆盖该规则的 Makefile。
在没有 Makefile 的目录中使用make -p
来了解所有默认值和内置规则。