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

时间:2016-10-15 19:51:10

标签: makefile gnu-make

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

g++     1.cpp   -o 1

由于隐式Makefile规则,所有这些都在目录中没有任何Make的情况下发生。但是,我无法弄清楚如何为了我的利益修改这些规则。例如,如果我需要像这样编译我的文件:

g++ -std=c++14 -O2 -g -w -o 1 1.cpp

为此,我想运行命令:make 1,它应该这样做。此外,它应该是任何文件的通用,例如我现在创建一个文件2.cpp并写make 2,它应该编译它并生成可执行文件,即使没有{{1}的规则在我的2中。 此外,如果我现在转到另一个未提及此显式规则的目录,则应仅根据默认隐式规则进行编译。我如何实现这个目标?

1 个答案:

答案 0 :(得分:2)

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

set CXXFLAGS="-std=c++14 -O2 -g -w"

如果您只希望将其应用于单个目录,请将Makefile放在包含以下内容的目录中

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