Make具有一个名为$(MAKECMDGOALS)
的内置变量,其中包含指定为命令行参数的所有目标。
我记得在我的高级C ++类中这样做,但是已经过去了两年,我忘记了。
我想制作一种简单的可重复使用的makefile,我只要在其中输入“ make programName”,它就会将programName.cpp编译为programName.exe。
我已经找了几个小时,但还没有找到我需要的东西。我知道这将被标记为重复,但至少可以指出我需要的内容。
为什么要在输出后缀.exe
?这是Windows约定,在Linux等POSIX系统上不遵循。
如果您不希望甚至根本不需要makefile。您可以键入不带makefile的make programName
,如果您有文件programName.c
,它将通过make的内置规则内置到可执行文件programName
中。
Make具有一个名为$(MAKECMDGOALS)
的内置变量,其中包含指定为命令行参数的所有目标。
您可以使用它来生成食谱,如下所示:
# Stop if 0 or 2+ targets were specified. $(if $(filter-out 1,$(words $(MAKECMDGOALS))),$(error Expected one target)) name := $(MAKECMDGOALS) $(name).exe: $(name).cpp g++ $^ -o $@
添加一种自定义编译器可执行文件和标志的方法,留给读者练习。以及在Linux上构建时从目标名称中有条件地删除
.exe
。
Make具有一个名为$(MAKECMDGOALS)
的内置变量,其中包含指定为命令行参数的所有目标。