Makefile 如何修改隐式GNUMake规则来编译文件?

Makefile 如何修改隐式GNUMake规则来编译文件?,makefile,gnu-make,Makefile,Gnu Make,GNUMake具有编译某些文件类型的隐式规则,例如,在我的目录中,如果我有一个文件1.cpp,并且我在终端make 1上写入,则执行以下命令: g++ 1.cpp -o 1 由于隐式的Make规则,所有这些都在目录中没有任何Makefile的情况下发生。但是,我不知道如何为我的利益修改这些规则。例如,如果我需要像这样编译我的文件: g++ -std=c++14 -O2 -g -w -o 1 1.cpp 为此,我想运行命令:make1,它应该这样做。此外,它应该是任何文件的通用文件

GNUMake具有编译某些文件类型的隐式规则,例如,在我的目录中,如果我有一个文件
1.cpp
,并且我在终端
make 1
上写入,则执行以下命令:

g++     1.cpp   -o 1
由于隐式的
Make
规则,所有这些都在目录中没有任何
Makefile
的情况下发生。但是,我不知道如何为我的利益修改这些规则。例如,如果我需要像这样编译我的文件:

g++ -std=c++14 -O2 -g -w -o 1 1.cpp
为此,我想运行命令:
make1
,它应该这样做。此外,它应该是任何文件的通用文件,例如,我现在创建一个文件
2.cpp
并编写
make2
,它应该编译它并生成可执行文件,即使在我的
Makefile
中没有关于
2
的规则。
另外,如果我现在转到另一个没有提到这个显式规则的目录,它应该只根据默认的隐式规则进行编译。如何实现这一点?

一种方法是设置环境中隐式规则使用的变量

set CXXFLAGS="-std=c++14 -O2 -g -w"
如果您只想将其应用于单个目录,则在目录中放置一个
Makefile
,其中包含以下内容

CXXFLAGS := -std=c++14 -O2 -g -w

但是我希望这些标志只在我当前的目录中,而不是在我的系统中的任何地方。这行吗?@SahilArora更新了答案