我有一个关于Makefile中变量范围的问题.
我有几个目标,所有目标都执行相同的命令,但命令的某些参数需要根据目标进行更改.
为了尝试消除冗余,我试图重构这些目标,以便每个目标只是设置一些变量,然后稍后调用一个使用这些变量的通用目标.
例如,
target1:
COMMAND="../bin/release/prog1 input"
TITLE=PROG1
OUTFILE=PROG1.pdf
make targetN
target2:
COMMAND="../bin/release/prog2 input"
TITLE=PROG2
OUTFILE=PROG2.pdf
make targetN
..
..
targetN:
$(COMMAND) | grep RESULTS > results.csv
gnuplot -e "TITLE=$(TITLE)" prog.plot
...
..
Run Code Online (Sandbox Code Playgroud)
这里target1和target2设置它们的"特定于目标"的变量,然后调用targetN.目的是targetN然后使用这些变量并使用它们运行常规命令.
问题:targetN没有看到在target1和/或target2中设置的这些变量的值.任何人都可以对此有所了解吗?我试图搜索有关目标范围的信息,但没有找到任何有用的信息.也许这个问题与范围无关,而且是一个完全不同的问题.
关于如何完成我想用这个方案实现的任何建议?
谢谢!