我正在使用makefile,如果我在命令行中传递选项,如
make OPT1=opt1 OPT1=2
我得到的行为与编辑Makefile并写入
的行为不同OPT1=opt1
OPT2=opt2
然后再运行
make
在命令行上。
我想要的行为就是我在命令行中使用选项的行为。现在我正在使用别名,但我很想知道这是否可以仅使用Makefile完成。
感谢。
答案 0 :(得分:1)
您的make文件是否对这些变量使用origin
命令来决定是否覆盖它们?这将返回变量的原点,例如, “环境”或“命令行”,也许makefile被编写为在这些情况下做一些不同的事情。
答案 1 :(得分:1)
我最终解决这个问题的方法如下:
mv Makefile Makefile.aux
然后使用内容
创建一个现在的MakefileOPT1=true
OPT2=false
DEFAULT_OPTS=--no-print-directory OPT1=$(OPT1) OPT2=$(OPT2)
.PHONY : $(MAKECMDGOALS)
$(MAKECMDGOALS):
$(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
.PHONY: all
all:
$(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
我使用--no-print-directory的原因是因为如果我在没有此选项的情况下使用此方法,它将在编译结束时和编译结束时打印一条额外的消息。